2017-05-23 1 views
0

Manchmal mein Aufruf: GetTime-Prozedur funktioniert manchmal nicht. Manchmal werden meine Archive nur mit dem Namen .rar benannt, zum Beispiel 23.05.2017_22-02-07.rarBatch-Set eine Var nicht immer funktioniert in Schleife

Warum passiert das? Die meiste Zeit funktioniert es gut ....

for /f "usebackq delims=" %%a in (`"%MD5% default_main_GlobalData.CSF"`) do set StartMD5=%%a 
    for %%a in (%StartMD5%) do set StartMD5=%StartMD5:~0,32% 
    :Proc1 
    if exist del "%Workdir%\SniperGhostWarrior3_Savegames\Hidden\.rar" 
    if exist del "%Workdir%\SniperGhostWarrior3_Savegames\Profile\.rar" 
    for /f "usebackq delims=" %%a in (`"%MD5% default_main_GlobalData.CSF"`) do set CurrentMD5=%%a 
    for %%a in (%CurrentMD5%) do set CurrentMD5=%CurrentMD5:~0,32% 
    if not "%CurrentMD5%" == "%StartMD5%" (
    call :GetTime 
    %Winrar% a -inul "%Workdir%\SniperGhostWarrior3_Savegames\Hidden\Temp.rar" "C:\Users\Administrator\Saved Games\Sniper Ghost Warrior 3\" 
    %Winrar% a -inul "%Workdir%\SniperGhostWarrior3_Savegames\Profile\Temp.rar" "D:\Spiele\Sniper Ghost Warrior 3\win_x64\Profile" 
    ren "%Workdir%\SniperGhostWarrior3_Savegames\Hidden\Temp.rar" "%CurrentTime%.rar" >nul 2>&1 
    ren "%Workdir%\SniperGhostWarrior3_Savegames\Profile\Temp.rar" "%CurrentTime%.rar" >nul 2>&1 
    set "StartMD5=%CurrentMD5%" 
    echo Game Saved. Backup created. %CurrentTime% 
    ) 
    goto :Proc1 
    :GetTime 
    set "CurrentTime=%date%_%time:~0,-3%" 
    set word=- 
    call set CurrentTime=%%CurrentTime::=%word%%% 
    goto :eof 
+2

Wofür sind die 'for %% a'-Schleifen? Du benutzt nie seine Variable '%% a' im Körper ... Und' falls vorhanden del' ist eine falsche Syntax - siehe 'if /?' ... – aschipfl

Antwort

0

Bitte endlose Artikel über delayedexpansion. Sie setzen currenttime in einem Unterprogramm, aber currenttime im Codeblock ist der Wert von currenttime zu der Zeit, die for angetroffen wird, nicht wie durch das Unterprogramm geändert.

Der einfachste Weg: call :gettime bewegen, bevor die if not "%CurrentMD5%" ==...

+0

Ich war zu faul mein Schlechter. Danke, es funktioniert jetzt gut, ich hätte das wissen müssen. –

0

In einer Schleife werden die Variablen am Ende der Schleife ihre Werte annehmen .. Wenn Sie ihnen in Ihrem Schleife verwenden möchten, setzen Sie diese Zeile in der oberen Ihrer Partie:

SETLOCAL ENABLEDELAYEDEXPANSION 

und innerhalb der Schleife, rufen Sie die Variable wie folgt aus:

!var! 

Viel Glück!

+0

Danke. Setlocal würde jedoch einen rekursiven Tiefenfehler verursachen. –

Verwandte Themen