[DOS] Warum ist die Variable leer?
Chris_als_Gast
- sonstiges
Hallo Forum,
back 2 the Roots :))
Fragt nicht, aber ich benötige tatsächlich eine DOSenanwendung unter Windows 7. :)
Ich habe Probleme mit der Erzeugung einer Variablen, die in einem normalen CMD-Fenster nacheinander eingeben das tut, was gefordert ist, aber in der Batch nicht. Vielleicht hat ja einer von Euch einen Tipp.
Anforderung:
Es gilt mit COPY eine Datei zu sichern. Dazu möchte ich die aktuelle Zeit und das aktuelle Datum an die Datei anhängen: Bsp.: Datei.csv > Datei_26092013_104500.csv
Umsetzung:
Ich habe eine Batch mit folgenden Befehlen, mit der ich die Aufgabe lösen möchte:
@ECHO OFF & SETLOCALE
...
SETLOCAL enabledelayedexpansion
SET ARCHIV_DATUM=%date:~-10,2%%date:~-7,2%%date:~-4%_%time:~-11,2%%time:~-8,2%%time:~-5,2%
SET DATUM=!ARCHIV_DATUM:^ =0!
SETLOCAL disabledelayedexpansion
echo Datei_%DATUM%.csv
...
Fehler:
Ausgabe von echo: "ECHO ist ausgeschaltet (OFF).", bedeutet ja: %DATUM% ist leer?!
Wenn ich aber die Befehle manuell einzeln nacheinander in ein CMD-Fenster kopiere und ausführe, erscheint bei "echo Datei_%DATUM%.csv" genau das geforderte, nämlich "Datei_26092013_104500.csv"
Frage:
Wieso?! :))
VG
Chris
Korrektur:
Ich habe eine Batch mit folgenden Befehlen, mit der ich die Aufgabe lösen möchte:
@ECHO OFF & SETLOCALE
Tippfehler in diesem Beitrag. SETLOCAL wäre richtig, ist aber in der Batch richtig geschrieben.
Sorry!
VG
Chris
Hallo Chris,
die Batch macht bei mir was sie soll, allerdings unter WinXP, sollte jedoch gleichgültig sein.
Batch:
@ECHO OFF & SETLOCAL
SETLOCAL enabledelayedexpansion
SET ARCHIV_DATUM=%date:~-10,2%%date:~-7,2%%date:~-4%_%time:~-11,2%%time:~-8,2%%time:~-5,2%
echo ARCHIV_DATUM: %ARCHIV_DATUM%
Pause
SET DATUM=!ARCHIV_DATUM:^ =0!
SETLOCAL disabledelayedexpansion
echo.
echo Archiv Datum: %ARCHIV_DATUM%
echo Datum: %DATUM%
echo.
Pause
Ausgabe:
D:>test.bat
ARCHIV_DATUM: 26092013_114050
Drücken Sie eine beliebige Taste . . .
Archiv Datum: 26092013_114050
Datum: 26092013_114050
Drücken Sie eine beliebige Taste . . .
Gruß
Fred
Hallo Chris,
die Batch macht bei mir was sie soll, allerdings unter WinXP, sollte jedoch gleichgültig sein.
Hallo Fred,
siehe meine Lösung. Vielen Dank für Dein Posting und das Ausprobieren.
VG
Chris
Lösung gefunden:
Die Variable ARCHIV_DATUM muss am Anfang des Scriptes mit einem Standardwert (der nicht leer sein darf!) gesetzt werden. Danach kann wird sie später im Script überschrieben und richtig ausgegeben.
Danke für's Kopfzerbrechen. :)
VG
Chris