Helló,
Van több ehhez hasonló for paranncsal végrehajtott backup scriptem, és észrevettem egy fura anomáliát.
FOR /F %%G IN (cfg\web_list.txt) DO (
d:\11\cfg\rar a -id[c,d,p,q] d:\11\%date%\web\%%G_%date%.rar c:\websrv\%%G
if exist d:\11\%date%\web\%%G_%date%.rar ( echo %time% %%G archived... OK >> d:\11\%date%\%date%.log ) else (
echo %time% %%G achived... FAIL >> d:\11\%date%\%date%.log
)
)
A probléma az, hogy amikor elindul az első kör, a %time% felvesz egy értéket, és a %date%.log file-ba végig azt írja be azonos FOR cikluson belül.
Hogyan lehetne ezt frissíteni, vagy üríteni a változó értékét?
Az oprendszer, amin ezt tapasztalom, Windows Server 2003 R2 Enterprise SP2. Több microsoft terméken nem teszteltem.
A válaszokat előre is köszönöm!
- 1099 megtekintés
Hozzászólások
sub
- A hozzászóláshoz be kell jelentkezni
Szia!
Én a „Delayed environment variable expansion” körül keresgélnék. („cmd /v”)
Leírás és példák: a set és a cmd parancsok helpjében.
Gy.
- A hozzászóláshoz be kell jelentkezni
átfutottam már őket, de egyértelmű megoldással nem szolgáltak.
Kaptam egy tippet, hogy deklaráljam külön változóként, valahogy így FOR cikluson belül:
set t=%time%, és %t% változót használjak. Nem jó megoldás :\
- A hozzászóláshoz be kell jelentkezni
meglett.
%time% helyett !time!, és jó is.
Köszi mindenki!
- A hozzászóláshoz be kell jelentkezni
javítás
önmagában a !time! változó nem elég.
cmd /V:ON /C backup.bat
ha így indtítjuk a scriptet, akkor működik csak a !time! változó.
- A hozzászóláshoz be kell jelentkezni