我的批处理文件test.bat
C:\Windows\System32\cmd.exe /c FOR /D %i IN (C:\ProgramData\PuppetLabs\puppet\etc\ssl\*) DO RD /S /Q "%i"
当我从命令提示符手动运行上面的命令时,它运行良好并删除C:\ ProgramData \ PuppetLabs \ puppet \ etc \ ssl中的所有内容。
现在,在批处理文件中使用相同的命令,当我运行批处理文件时,它返回:
C:> test.bat的
C:\>C:\Windows\System32\cmd.exe /c FOR /D \ProgramData\PuppetLabs\puppet\etc\ssl\*) DO RD /S /Q "i"
\ProgramData\PuppetLabs\puppet\etc\ssl\*) was unexpected at this time.
以上输出错过了(C:来自批处理文件。
有什么想法吗?感谢您的帮助。
答案 0 :(得分:1)
问题是另一个问题!
注意从命令行运行时输出中是否缺少%i
?还有很多不同的东西,直到命令行的下一个%i
?
批量使用for循环时,必须使用另一个百分号转义循环参数:
C:\Windows\System32\cmd.exe /c FOR /D %%i IN (C:\ProgramData\PuppetLabs\puppet\etc\ssl*) DO RD /S /Q "%%i"
应该工作:)
答案 1 :(得分:0)
你是否在没有for循环的情况下尝试过它?
Cmd.exe /C RD /S /Q "C:\ProgramData\PuppetLabs\puppet\etc\ssl*"