我有一个包含以下代码的批处理文件:
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