Batch-File

命令中帶括號的批處理循環

  • May 28, 2009

我有一個包含以下程式碼的批處理文件:

for /f "tokens=*" %%a in ('dir /b /a-d') do (
echo Processing %%a >>%LOG%
dtsrun /S(local) /NNotesLoad /A"FilePath:8="%NOTESDIR%\%%a" /AClientID=%1 >>%LOG%

echo Deleting %%a >>%LOG%
del %%a /q
)

這將返回“/NNotesLoad 此時意外”的錯誤消息,因為第二個括號有效地關閉了 FOR 塊。

我必須將 (local) 保留為 /S 參數。如何轉義 dtsrun 行中的括號?

嘗試將 /S(local) 替換為 /S%computername% 或 /S。或 /Slocalhost。所有這些都應該在不使用括號的情況下完成相同的事情。

或者,您可以使用插入符號 ^ 來轉義括號:

dtsrun /S^(本地^) …

謝謝,標記

在可能失去一些可讀性的情況下,您可以將所有這些命令放在同一行,並在您的 for 循環中消除對括號的需要。

for blah blah blah do command 1 && command 2 && command 3 && command 4

引用自:https://serverfault.com/questions/13433