我需要运行批处理文件来设置多个文件夹的权限。
我们有以下文件夹结构
Folder1、Folder1\Client1、Folder1\Client2、Folder1\Client3 然后在每个客户端文件夹中,我们有几个子文件夹,例如文件夹1\客户端1\子文件夹1 文件夹1\客户端1\子文件夹2 文件夹1\客户端1\子文件夹3
我需要重置上例中所有子文件夹的权限,并在名为 requests.bat 的文件中包含以下代码
for /f %%g in ('dir "f:\temp\" /ad /b') do for /f %%a in ('dir %%~fg /ad /b') do icacls
"%%~fg\%%a" /grant:r domain\mygroup:(OI)(CI)M
这工作正常,但对于包含空格的客户端和子文件夹,它不起作用。例如
Folder1\Client1\Sub Folder 1
显示为
Folder1\Client1\Sub\
紧随其后的是系统找不到指定的文件错误。有什么想法吗?
顺便说一下,这是在 2003 服务器上运行的。
最佳答案
FOR 循环的默认分隔符是空格和制表符。您需要将分隔符指定为仅反斜杠。例如:
for /f "tokens=* delims=\" %%g in ('dir "f:\temp\" /ad /b') do ...
请参阅此处了解更多信息:Tokens and Delims
该脚本还有一些其他问题,但我相信以下内容适合您:
SET folder=F:\temp
for /f "tokens=* delims=\" %%g in ('dir "%folder%\" /ad /b') do for /f %%a in ('dir "%folder%\%%g" /ad /b') do icacls "%folder%\%%g\%%a" /grant:r domain\mygroup:(OI)(CI)M
关于windows - 在批处理文件中使用空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320450/