如果以字符串结尾,则更改文件夹的权限

时间:2014-10-22 13:04:31

标签: batch-file

目前我正在尝试创建一个批次,该批次将通过一长串文件夹,我只需要更改某些文件夹权限。唯一的问题是,当我运行它时,它总是使用树中的最后一个文件夹并跳过所有其余文件夹。

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进行比较,如果这是真的,则添加该目录的权限。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要使用延迟扩展。

  1. SETLOCAL ENABLEDELAYEDEXPANSION循环之前添加FOR
  2. 将变量引用从%folder%更改为!folder!%ending%更改为!ending!
  3. 删除=语句中SET周围的空格。
  4. 例如:

    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
    
    )