目前我正在尝试创建一个批次,该批次将通过一长串文件夹,我只需要更改某些文件夹权限。唯一的问题是,当我运行它时,它总是使用树中的最后一个文件夹并跳过所有其余文件夹。
for /f "tokens=*" %%G in ('dir /b /s /a:d "C:\Users\ash.taylor\Desktop\Proposals\*"') do (
set folder="%%G"
echo %folder%
set ending = "%folder:~-14%"
echo %ending%
IF "%ENDING%" == "5.0.0-Drawings" ICACLS "%DIR%" /GRANT:R "User":M
)
所以基本上我想获得目录的最后14个字符并将其与5.0.0-Drawings进行比较,如果这是真的,则添加该目录的权限。
提前致谢。
答案 0 :(得分:0)
您需要使用延迟扩展。
SETLOCAL ENABLEDELAYEDEXPANSION
循环之前添加FOR
。%folder%
更改为!folder!
和%ending%
更改为!ending!
。=
语句中SET
周围的空格。例如:
setlocal enabledelayedexpansion
for /f "tokens=*" %%G in ('dir /b /s /a:d "C:\Users\ash.taylor\Desktop\Proposals\*"') do (
set folder="%%G"
echo !folder!
set ending="!folder:~-14!"
echo !ending!
IF "!ENDING!" == "5.0.0-Drawings" ICACLS "%DIR%" /GRANT:R "User":M
)