Zum Inhalt springen

Batch für ein Backup mit Umbennenung


chacky3

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 "-".

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...