3
我有以下代碼。除了一些問題,它的效果很好。首先,我的「如果不是空白」檢查根本不起作用。其次,每次迭代過程中,它最後一次傳遞服務器名稱爲服務器名和文件夾兩個,這我真的不理解......BAT文件(批處理)中的嵌套循環返回不期望的結果
代碼
SET servers=server01,server02
SET drive=c
SET root=program files (x86)\test\
SET backup=%root%\backup
SET folders=folder01\,folder02\file01.txt
FOR %%b in (%servers%) do (
FOR %%a in (%folders% %%b) DO (
if not %%a == "" call :backup %%b %%a
)
)
:backup
SET currentfile="\\%1\%drive%$\%2"
setlocal
echo Backing Up %currentfile%
REM mkdir "\\%1\%drive%$\%backup%"
REM xcopy /I
exit /b
endlocal
goto :end
輸出
1] Backing Up "\\server01\c$\folder01\"
2] Backing Up "\\server01\c$\folder02\file01.txt"
3] Backing Up "\\server01\c$\server01"
4] Backing Up "\\server02\c$\folder01\"
5] Backing Up "\\server02\c$\folder02\file01.txt"
6] Backing Up "\\server02\c$\server02"
7] Backing Up "\\\c$\"
正如你所看到的,第3,6和7行是不需要的。
+1,我是在寫幾乎相同的答案之中,當我看到您的帖子來通過。雖然我喜歡用EXIT/B代替GOTO:EOF – dbenham 2012-08-03 20:01:44
@dbenham謝謝。我同意退出是更清楚的,並已作出改變。 – 2012-08-03 20:08:07
@KenWhite我認爲'goto:eof'早於'exit/b',並且期待Raymond Chen從此開始使用它:) – 2012-08-03 20:15:51