所以在你的Windows机器上试试这个for循环
for /f "tokens=1,2 delims==" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do dir %b
这对我来说工作得很好,但是当我使用icacls命令而不是dir时,我得到一个错误,指出icacls无法处理
for /f "tokens=1,2 delims==" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do icacls %b
如果我一次对任何一个输出运行icacl,它就能正常工作。
icacls c:\windows\ehome\ehrecvr.exe
此外,我回显命令只是为了确保所有内容看起来都是合法的
for /f "tokens=1,2 delims==" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo icacls %b
有什么建议吗?
发布于 2012-02-28 06:18:04
对于我的生活,我不明白为什么失败了。但是使用do call icacls %b似乎可以绕过这个问题。
但服务选项包含在%b中,它们会导致icacl失败,因为它们是icacl的无效选项。
最简单的解决方案似乎是切换到调用子例程的批处理文件。仅通过处理%1即可删除不需要的选项。
为了安全起见,最好使用"tokens=1*",以防"出现在任何路径中。
@echo off
for /f "tokens=1* delims==" %%a in ('wmic service list full^|find /i "pathname="^|find /i /v "system32"') do call :doit %%b
exit /b
:doit
icacls %1https://stackoverflow.com/questions/9472383
复制相似问题