因此,请尝试在Windows框上进行循环
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
如果我一次针对任何一个输出运行icacls,它可以正常工作
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
任何建议?
答案 0 :(得分:1)
对于我的生活,我无法弄清楚为什么会失败。但是使用do call icacls %b
似乎解决了这个问题。
但是服务选项包含在%b中,它们会导致icacl失败,因为它们是icacls的无效选项。
最简单的解决方案似乎是切换到调用子例程的批处理文件。只需处理%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 %1