首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >icacls在DOS for循环中给出失败的处理错误

icacls在DOS for循环中给出失败的处理错误
EN

Stack Overflow用户
提问于 2012-02-28 05:15:09
回答 1查看 1.2K关注 0票数 1

所以在你的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

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-28 06:18:04

对于我的生活,我不明白为什么失败了。但是使用do call icacls %b似乎可以绕过这个问题。

但服务选项包含在%b中,它们会导致icacl失败,因为它们是icacl的无效选项。

最简单的解决方案似乎是切换到调用子例程的批处理文件。仅通过处理%1即可删除不需要的选项。

为了安全起见,最好使用"tokens=1*",以防"出现在任何路径中。

代码语言:javascript
复制
@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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9472383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档