Batch - Meldung unterdrücken

Diskutiere Batch - Meldung unterdrücken im WinXP - Software Forum im Bereich Windows XP Forum; Guten Abend allerseits! :) Ich hab mir gerade ein kleines Batch-Script erstellt um meine Dateien zwischen PC und Server zu synchronisieren. Das...
F

FrozenFox

Threadstarter
Mitglied seit
27.06.2006
Beiträge
12
Guten Abend allerseits! :)

Ich hab mir gerade ein kleines Batch-Script erstellt um meine Dateien zwischen PC und Server zu synchronisieren.

Das Programm ist eigentlich schon fertig und funktioniert genau so wie es soll.

Es gibt allerdings noch einen kleinen "Schönheitsfehler". Ich übeprüfe an einer Stelle ob eine bestimmte Datei existiert (mit exist). Wenn die Datei aber nicht vorhanden ist (kommt oft vor) dann bekomm ich die unschöne Meldung:
Das System kann das angegebene Laufwerk nicht finden.

Meine Frage nun, wie kann ich das unterdrücken, verhinden?

Die verantwortliche Codezeile:
Code:
if exist "%target%\%currentDate%-%maxBackups%.7z" (
Falls die eine Zeile nicht reicht um mein Problem genau zu verstehen, hier der komplette Code:
Code:
:: Dateisyncronisation zwischen Laptop und FH
:: 
:: Version: 1.0
:: Vorraussetzungen: 7 Zip 4.57
::
:: Datum:  06.03.2008   Autor:  FrozenFox    Aktivität: Erstellung

@echo off
color 0a

:: Tagesdatum - Datumsformat JJJJ-MM-TT
set currentDate=%date:~-4%-%date:~-7,2%-%date:~-10,2%
:: Anzahl der aktuellen Tagesbackups
set currentBackup=0
:: maximale Anzahl der möglichen Backups (Übertragungen) pro Tag
set maxBackups=9
:: Pfad zu 7Zip
set zip7=C:\Tools\7-Zip\7z.exe
:: lokaler Dateipfad
set localPath=D:\xxx\
:: FH-Dateipfad
set fhPath=X:\xxx\

:Choose
echo  /----------------------------------------------------------------------------/
echo  / FH-Dateisyncronisation                                    (c) FrozenFox /
echo  /  Version 1.0                                                               /
echo  /  Release Datum: 06.03.2008                                                 /
echo  /----------------------------------------------------------------------------/
echo  / [D]ownload - l„dt die aktuellsten Dateien von der FH herunter              /
echo  / [U]pload   - l„dt die aktuellsten Dateien zur FH hoch                      /
echo  / [E]nde     - beendet das Programm                                          /
echo  /----------------------------------------------------------------------------/
echo.
set /P w= Bitte ausw„hlen: 

if /I "%w%" == "d" goto DOWNLOAD
if /I "%w%" == "u" goto UPLOAD
if /I "%w%" == "e" goto END

cls
goto Choose

:Download
:: Download vorbereiten
set source=%fhPath%
set target=%localPath%
goto CheckIfEmpty

:Upload
:: Upload vorbereiten
set source=%localPath%
set target=%fhPath%
goto CheckIfEmpty

:CheckIfEmpty
:: prüfen ob das Verzeichnis leer ist
if exist "%target%" (
	:: das Verzeichnis ist leer - keine Sicherung nötig
	dir /b /A:-d "%target%">nul 2>nul || goto Copy
)
if exist "%target%" (
	:: das Verzeichnis ist nicht leer - zuerst Sicherung durchführen
	dir /b /A:-d "%target%">nul 2>nul && goto Save
)

:Save
:: prüfen ob noch Backups angelegt werden können
if exist "%target%\%currentDate%-%maxBackups%.7z" (
	echo.
	echo  /----------------------------------------------------------------------------/
    echo  / Die maximale Anzahl an �bertragungen wurde bereits erreicht.               /
    echo  /   - Die �bertragung wurde NICHT DURCHGEF�HRT !! -                          /
	echo  /----------------------------------------------------------------------------/
	echo.
	goto End
) else (
	:: falls es bereits ein oder mehrere Tagesbackup(s) gibt, wird überprüft, welche Nummer 
	:: das neue Backup bekommen soll
	if exist "%target%\%currentDate%-1.7z" (
		for /L %%i in (2 1 %maxBackups%) do (	
			if not exist "%target%\%currentDate%-%%i.7z" (
				:: 7Zip Archiv erstellen - Dateien mit der Endung .7z dabei exkludieren, Schleife dann verlassen
				%zip7% a "%target%\%currentDate%-%%i.7z" "%target%\*" -x!*.7z >nul 2>nul
				set currentBackup=%%i
				goto ZipMessage
			)
		)
	) else (
		:: 7Zip Archiv erstellen - Dateien mit der Endung .7z dabei exkludieren
		%zip7% a "%target%\%currentDate%-1.7z" "%target%\*" -x!*.7z >nul 2>nul
		set currentBackup=1
	)
)

:ZipMessage
echo.
echo  /----------------------------------------------------------------------------/
echo  / Sicherung vor der šbertragung wurde durchgef�hrt.                          /
echo  / maximale Anzahl der Tagessicherungen: %maxBackups%                                    /
echo  / aktuelle Anzahl der Tagessicherungen (%currentDate%): %currentBackup%                       /
echo  /----------------------------------------------------------------------------/

:Copy
:: Daten kopieren
:: .7z-Dateien sollen nicht übertragen werden
set excludeFile=excl.txt
echo .7z > %excludeFile%
:: Ausgabe und / oder Fehlermeldungen von xcopy ins Nirvana schicken
xcopy "%source%" "%target%" /s /i /q /h /y /exclude:%excludeFile% >nul 2>nul
:: Hilfsdatei wieder löschen
del %excludeFile%

echo.
echo  /----------------------------------------------------------------------------/
echo  / Daten wurden erfolgreich �bertragen.                                       /
echo  /----------------------------------------------------------------------------/
echo.

:End
echo.
echo  Dr�cken Sie eine beliebige Taste zum Beenden des Programms.
:: Ausgabe von pause ins Nirvana schicken
pause >nul
Vielen Dank im Vorraus für jede Hilfe!
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
7.985
Für mich sieht die Fehlermeldung eher so aus, dass es Probleme mit localPath oder fhPath gibt, es liegt also nicht an der Datei.
Ansonsten kannst Du höchstens versuchen, die Ausgaben nach NUL umzuleiiten, wie Du es ja auch am Schluss tust. Aber die Umleitung nach NUL funktioniert nur bedingt (es gibt ja verschiedene Ausgabekanäle)
 
F

FrozenFox

Threadstarter
Mitglied seit
27.06.2006
Beiträge
12
Hab es nun lösen können. :)
Das Problem waren diese 2 Kommentar-Zeilen:
Code:
:: falls es bereits ein oder mehrere Tagesbackup(s) gibt, wird überprüft, welche Nummer 
:: das neue Backup bekommen soll
Wenn man die auf 1 Zeile reduziert funktioniert alles ohne der blöden Fehlermeldung.

Weiß jemand zufällig warum das so ist?
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
7.985
Vielleicht hängt es damit zusammen, dass der : ja eigentlich für Sprungmarken und am Zeilenanfang (sprich Spalte 1) gedacht ist und nicht für Kommentare (REM). _Vielleicht_ wird dann "Leerstelle:: " als Laufwerk interpretiert.
Du könntest höchstens mal ohne "echo off" und einigen eingebauten pausen bzw. zusätzlichen echos versuchen, den Skript zu debuggen (oder gab das 'ne Option, die die Batchfiles immer nur zeilenweise ausführt?), um zu sehen, was da passiert.
Oder die () im Kommentar stören, und er versucht dann irgendwie auf Laufwerk s: zuzugreifen.
Wie gesagt, nur Vermutungen.
 
Bullayer

Bullayer

Schwergewicht
Mitglied seit
19.07.2006
Beiträge
24.150
Standort
DE-RLP-COC
Häng mal ein >NUL hinter den EXIST Befehl, dann sollte die Fehlermeldung ins Nirvana verschwinden.
 
F

FrozenFox

Threadstarter
Mitglied seit
27.06.2006
Beiträge
12
Hab ich schon versucht, hab das sogar testweise mal hinter jede einzelne Anweisung gestellt, aber ohne Erfolg.

Mittlerweile halte ich das für einen kleinen Batch-Bug wenn man Kommentare hinter ) else ( hängt.
 
Thema:

Batch - Meldung unterdrücken

Batch - Meldung unterdrücken - Ähnliche Themen

  • Keine Applikation zum Ausführen einer Batch Datei vorhanden

    Keine Applikation zum Ausführen einer Batch Datei vorhanden: Sobald ich ich versuche eine .bat Datei zu starten steht dort das die Nötige Applikation auf meinem PC fehlt.
  • Batch Datei öffnen

    Batch Datei öffnen: Hallo, ich hätte da mal eine Frage! Ich möchte eine Batch Datei starten/öffnen, allerdings wird dieser Text bei mir angezeigt "Diese App kann auf...
  • [Batch] Dateien in bestimmter Menge in noch nicht vorhandene Ordner verschieben

    [Batch] Dateien in bestimmter Menge in noch nicht vorhandene Ordner verschieben: Hallo ihr, ich hab da ein Problemfall den ich gerne mit einer Batch lösen wollen würde. Folgende Ausgangssituation: Ich habe einen Ordner mit...
  • Sie müssen eine App für diese Aufgabe installieren bei Batch-Datei

    Sie müssen eine App für diese Aufgabe installieren bei Batch-Datei: Hallo liebe Community, Wenn ich eine batch-Datei unter Windows 10 starten möchte, kommt immer das Fenster "App im Store suchen? Sie müssen eine...
  • GELÖST Batch script kopieren von Autostart in Ordner der nach Username benannt ist.

    GELÖST Batch script kopieren von Autostart in Ordner der nach Username benannt ist.: Hallo ihr Lieben, Zu meiner Sittuation: Ich versuche ein Script zu erstellen das den Inhalt der Autostart von mehreren Usern auf einem...
  • Ähnliche Themen

    Oben