Chris_als_Gast: [DOS] Warum ist die Variable leer?

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

  1. 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  
    
    
  2. 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

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

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