For loop FOR/F不适用于文件名中有空格的文件

For loop FOR/F不适用于文件名中有空格的文件,for-loop,cmd,permissions,icacls,For Loop,Cmd,Permissions,Icacls,我使用了这个命令: for /f %i in ('dir /b /s "C:\x\x\x\x\*Cyber-Unit*"') do icacls %i /grant "MetricUsers":(OI)(CI)F 但是,只有当父文件夹的文件夹名中没有空间时,文件(网络单元)的权限才会更改。Stephen和aschipfl已经为您提供了所需的内容 for /f "delims=" %i in ('dir /b /s "C:\x\x\x\x\*Cyber-Unit*"') do icacls "%

我使用了这个命令:

for /f %i in ('dir /b /s "C:\x\x\x\x\*Cyber-Unit*"') do icacls %i /grant "MetricUsers":(OI)(CI)F

但是,只有当父文件夹的文件夹名中没有空间时,文件(网络单元)的权限才会更改。

Stephen和aschipfl已经为您提供了所需的内容

for /f "delims=" %i in ('dir /b /s "C:\x\x\x\x\*Cyber-Unit*"') do icacls "%~i" /grant "MetricUsers":(OI)(CI)F
如果这进入.bat脚本文件,则使用双变量百分比符号

for /f "delims=" %%i in ('dir /b /s "C:\x\x\x\x\*Cyber-Unit*"') do (
    icacls "%%~i" /grant "MetricUsers":(OI)(CI)F
)

因为/F
确实有效,您使用错误;在命令提示符中键入
for/?
时,请阅读帮助,并仔细阅读;您会注意到一个默认为空格和制表符的
delims=
选项。除了
“delims=”
(或
“tokens=*”
)之外,别忘了使用
icalcs“%i”…
谢谢您的回复:)我尝试了,但仍然不起作用。我用“%~i”替换了%i,并添加了“tokens=*”,但它给了我同样的结果。我也试过delims,也得到了同样的结果。@vegets-请将你当前的代码复制粘贴到问题中,这样人们就可以确切地看到你在尝试什么。谢谢。这就是我使用的代码:对于/f“delims=“%i in('dir/b/s“C:\x\x\x\x*Cyber Unit*”)do icacls“%~i”/grant“MetricUsers”:(OI)(CI)f