命令中带括号的批量 for 循环

命令中带括号的批量 for 循环

我有一个包含以下代码的批处理文件:

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 行中的括号?

答案1

尝试用 /S%computername% 或 /S. 或 /Slocalhost 替换 /S(local)。所有这些都应该在不使用括号的情况下完成相同的操作。

或者,您可以使用插入符号 ^ 来转义括号:

dtsrun /S^(本地^) ...

谢谢,马克

答案2

尽管可能会损失一些可读性,但您可以将所有这些命令放在同一行,并且不再需要在 for 循环中使用括号。

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

相关内容