chacky3 Geschrieben 5. Oktober 2004 Teilen Geschrieben 5. Oktober 2004 Hallo, sorry erstmal aber ich bin in der sache nen ziehmlich Newbie, aber ich soll ein Backupbatch schreiben das bestimmte Datein (z.B. Excel .xls) auf ein anderes Laufwerk sichert und die Dateien gleichzeitig umbennet und das Aktuelle Datum einfügt (z.B. von test.xls zu test05102004.xls) und falls die Datei schon vorhanden ist soll er es zu z.B. test05102004A.xls oder test05102004B.xls) machen. Also ich bin noch nicht wirklich weit damit also bitte nicht lachen... hier mal der batch: @echo off echo ------------------------- echo * BackupTool v.0.4 beta * echo ------------------------- :Start echo. @echo Beginne mit dem Backup echo. call date /t > c:\test2\date.txt call time /t > c:\test2\time.txt xcopy /e /f /y /v c:\test\*.xls c:\test2\backup\ IF not exist c:\test2\backup\*.xls goto erfolg IF exist C:\test2\backup\*.xls goto schonda IF errorlevel 255 goto :error echo. echo. :erfolg @echo !!!Das Backup wurde erfolgreich ausgefuehrt!!! echo. goto ende :error @echo !!!Bei den Versuches des Backups ist ein Fehler aufgetreten!!! echo. :schonda @echo Die Dateien sind schon auf dem Ziellaufwerk vorhanden! @echo. :Ende pause also ich bin über alle vorschläge gegenüber offen Veile Grüße chacky Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 5. Oktober 2004 Teilen Geschrieben 5. Oktober 2004 soweit, sogut. nen Backup macht er ja nur. Nur mit dem Umbenennen wirst du ein Problem bekommen. H:\>date /t 05.10.2004 H:\>time /t 11:58 H:\> mit time hast du also ein Problem! Dort sind Doppelpunkte drin, die nicht in einem Dateinamen auftauchen dürfen. Du musst dir also irgendwas überlegen um time und date umzuwandeln. Ich würde da was in perl basteln. geht fix, und funktioniert. Gruß Enno Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chacky3 Geschrieben 5. Oktober 2004 Autor Teilen Geschrieben 5. Oktober 2004 also das mit dem time kann ich auch weg lassen würde dann halt nen A oder B dafür einsetzten wenn es merhmals am gleich tag gesichert werden würde. Grüße chacky Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_Martin_ Geschrieben 5. Oktober 2004 Teilen Geschrieben 5. Oktober 2004 Vorschläge: - ein @ECHO OFF am Anfang genügt - dann brauchst du später kein @ECHO mehr - prüfe vor dem Kopieren mit xcopy, ob die Zieldatei schon vorhanden ist, nicht danach (dann hast du sie ja schon überschrieben :confused: ) - schau dir den DOS-Befehl FOR an - benutze Variablen; schreib z.B. das Datum in eine Variable (das geht mit FOR) und benutze sie später beim Kopieren als Teil des Dateinamens - arbeite mit weniger GOTO, dafür mit mehr Klammern: IF ERRORLEVEL 255 ( ECHO Fehler! ) ELSE ( ECHO Alles OK! ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chacky3 Geschrieben 12. Oktober 2004 Autor Teilen Geschrieben 12. Oktober 2004 also der Btach sieht jetzt so aus und funktioniert auch unter Win2k/xp aber leider nicht mir NT 4.0, ich denke er kommt mir den Variablen nicht zu recht @echo off @echo Starte Backup echo ------------------------------ echo * BackupTool v.0.8 * echo ------------------------------ set XTime=%Time:~0,2% set XTime=%XTime%-%Time:~3,2% set XTime=%XTime%-%Time:~6,2% set XTime=%XTime%-%Time:~9,2% set Verzname=%Date%-%XTime% if exist d:\Test\*.xls goto :Kopieren goto :Quelle :Kopieren xcopy /f /y /v D:\Test\*.xls "D:\Test2\SIK\Backup\%Verzname%\" if==errorlevel 255 (echo Achtung Fehler) else (echo Alles OK) echo. rem del D:\Test\*.xls goto Ende :Quelle echo !!!Die Quelldateien (Verzeichniss) konnten nicht gefunden werden!!! :Ende Pause exit Fehlermeldung unter WinNT4.0 ist: Verzeichniss kann nicht angelegt werden und er zeigt mir die ganzen Variablen an. Hat jemand eine Idee? Grüße chacky Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_Martin_ Geschrieben 13. Oktober 2004 Teilen Geschrieben 13. Oktober 2004 AFAIK gibt es die Variablen %time% und %date% unter Win NT 4.0 nicht, und bei der "Substring" Funktion (%:~x,y%) bin ich mir auch nicht sicher. Schau am Besten mal die Hilfe zu der SET Funktion an. Wenn NT 4.0 den FOR Befehl mit einem Kommando als einzulesende Datei unterstützt, kannst du das Datum auch so in eine Variable schreiben: FOR /F "tokens=1-4" %%a IN ('cmd /c "echo. | date"') DO IF "%%a"=="Aktuelles" SET datum=%%d Das funktioniert so: - es wird das Kommando in der Klammer ausgeführt: cmd /c "echo. | date" - cmd startet eine neue "Shell" - und führt dort den Befehl date aus - Anschliessend wird ein "echo." dort reingepipet, das wirkt so, als würdest du selbst ENTER drücken - die "Shell" wird beendet, und ihre Ausgabe durch den FOR-Befehl bearbeitet Die Ausgabe ist (unter Windows 2000): Aktuelles Datum: Mi 13.10.2004 Geben Sie das neue Datum ein: (TT-MM-JJ) Der FOR-Befehl arbeitet diese beiden Zeilen nacheinander ab und prüft, ob das 1. Token (%%a) der String "Aktuelles" ist - wenn ja, wird der 4. Token (%%d) in die Variable %datum% geschrieben. Die Token werden hierbei durch Leerzeichen getrennt, d. h. das 4. Token ist eben das aktuelle Datum. Wenn die Ausgabe von "date" unter NT 4.0 anders ist, musst du die Befehle entsprechend anpassen. HTH PS: du kannst auch Zeichen in einer Variable ersetzen - das erspart dir das "Zusammenfrickeln" der %zeit% Variable: %zeit:[b]:[/b]=[b]-[/b]% ersetzt alle ":" in %zeit% durch "-". Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.