Batch variablen

Domi83

Rear Admiral
Registriert
Feb. 2010
Beiträge
5.350
Hallo Leute, ich habe da mal ein kleines und spezielles Anliegen.
Ich habe mir auf einem Linux System ein Backup-Skript gebaut das mir meine Daten von diversen Verzeichnissen packt mit tar und in ein Verzeichnis nach Datum und Zeit packt.
-> 2012-06-05_0100

Nun habe ich mir ein Skript gebaut, und das vorhin mal manuell ausgeführt...
Code:
@echo off
set backup="G:\sicherung"
set datum=%date:~6,4%-%date:~3,2%-%date:~0,2%
set path="C:\Program Files\WinRAR"
set zeit=%time:~0,2%%time:~3,2%

cd %path%

mkdir %backup%\%datum%_%zeit%
rar a -r -ep1 %backup%\%datum%_%zeit%\archiv.rar D:\xxx\*
pause
Problem ist bloß die Uhrzeit vor 10:00!! Denn die Zahlen stellt Windows nicht mit zwei stellen dar, sondern nur mit einer :D

Gibt es eine Möglichkeit die Uhrzeit immer im Format 00:00 anzeigen zu lassen? Natürlich ohne Doppelpunkt.. den nehme ich dann raus ;) Ich hatte auch schon mal alternativen raus gesucht wie "batch format time" wo ich dann auf folgenden Teil gestoßen war...
Code:
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
aber das brachte mir keinen Erfolg. Vielleicht kann mir mal jemand sagen, wie ich die Zeit formatieren kann... :)

Gruß, Domi

p.s. Das ist beabsichtigt das ich die Sicherung die ich da habe via Batch durchlaufen lassen möchte. Ich brauche keine Tipps wie "nimm Acronis, ntBackup" etc. Die Sicherung der Daten soll mit WinRar geschehen, so wie ich sie da aufgebaut habe.

p.p.s. Ein weiteres Feature wäre dann noch, dass er mir nach "pause" das nächste Archiv packt. Brauche ich dann den Befehl nur noch einmal dahinter schreiben?
 
AW: Frage, Batch variablen

Code:
if %stunde% LSS 10 set stunde=0%stunde%
;)
 
AW: Frage, Batch variablen

Spitze, dass baue ich mir nachher mal in den Taskplaner ein.. Dann hätte ich mal ein Backup-Skript das Systemübergreifend ist, und nicht überall ein Tool wie Acronis etc. benötigt. WinRar oder so etwas wie 7zip etc. ist ja fast überall drauf, und für eine reine Datensicherung / Backup sollte das ausreichen :)

Gruß, Domi
 
AW: Frage, Batch variablen

Oder noch differenzierter:
Code:
@echo off
set datum=%date%
set zeit=%time%

for /F "delims=. tokens=1" %%i in ("%datum%") do set tag=%%i
for /F "delims=. tokens=2" %%i in ("%datum%") do set monat=%%i
for /F "delims=. tokens=3" %%i in ("%datum%") do set jahr=%%i

for /F "delims=: tokens=1" %%i in ("%zeit%") do set stunde=%%i
for /F "delims=: tokens=2" %%i in ("%zeit%") do set minute=%%i
for /F "delims=: tokens=3" %%i in ("%zeit%") do set sekvoll=%%i
for /F "delims=, tokens=1" %%i in ("%sekvoll%") do set sekunde=%%i

echo        %jahr%.%monat%.%tag% - %stunde%.%minute%.%sekunde%

Ping -n 6 localhost > nul
 
AW: Frage, Batch variablen

Theoretisch sollte dort ein delims=,: tokens=1-6 reichen, wodurch du dann alles per tag=%i, monat=%j, jahr=%k, ... ansprechen kannst. Somit sollte eigentlich eine Schleife reichen. Sitz aber grad vor keinem Windows PC.
 
AW: Frage, Batch variablen

die Frage ist ja, was Date und Time ausgeben.

Die Einstellung ist von Windows abhängig(Systemsteuerung -Region/Sprachoptionen - Standards und Formate). Wenn die Einstellung im Format TT.MM.JJJJ bzw. HH:mm:ss ist, wird automatisch die Null vorangestellt.

Wenn Date und Time im richtigen Format sind, braucht man nur folgendes:

Code:
FOR /F "tokens=1,2,3 delims=/. " %%a in ('Date/T') do set CDATE=%%c-%%b-%%a

Das gleiche gilt natürlich auch für Time.

Code:
FOR /F "tokens=1,2 delims=/: " %%a in ('Time/T') do set CTIME=%%a%%b
 
AW: Frage, Batch variablen

Okay, ich glaube das wird dann gleich etwas zu komplex für mich :D
Ich habe meine drei "rar" Befehle einfach untereinander gepackt und die Batch einmal ausgeführt... siehe da, alle Archive gepackt die ich haben wollte und gut.

Nun bin ich zufrieden und kann neben der normalen Datensicherung auch ein gepacktes Archiv zur Sicherung erstellen.

Gruß, Domi
 
Zurück
Oben