【问题标题】:batch file to run command on folder and sub-folders with specific name批处理文件以在具有特定名称的文件夹和子文件夹上运行命令
【发布时间】:2021-12-16 20:01:37
【问题描述】:

我需要运行一个命令

icacls "foldername" /deny IUSR:(OI)(CI)(X)

在 c:\inetpub\wwwroot 中名称为“UploadFiles”或“Newsletter”或“somethingelse”的每个文件夹上

我使用 dir 命令提取所有文件夹,然后为每个“行”(文件夹)运行一个长批处理文件

这样

icacls "folder1/UploadFiles" /deny IUSR:(OI)(CI)(X)
icacls "folder2/UploadFiles" /deny IUSR:(OI)(CI)(X)
icacls "folder3/Newsletter" /deny IUSR:(OI)(CI)(X)
icacls "folder4/ssss/Newsletter" /deny IUSR:(OI)(CI)(X)

如何使用 for 命令来做同样的工作?

【问题讨论】:

  • 你有多少匹配项?你现在显示 3。这是要匹配的基本标准吗?
  • 现在只是“UploadFiles”或“Newsletter”或“somethingelse”

标签: windows batch-file permissions


【解决方案1】:

您可以使用所有匹配条件创建一个变量,然后为每个匹配项运行一个 for 循环:

@echo off
set "vars="*UploadFiles*" "*Newsletter*" "*somethingelse*""
for /D %%i in (%vars%) do icacls "%%~i" /deny IUSR:(OI)(CI)(X)

这样您就可以使用相关的搜索条件更新%vars% 变量。

【讨论】:

  • 它如何遍历所有文件夹?
  • 我不明白你在问什么?这将遍历运行脚本的所有本地文件夹。如果找到匹配项,它将执行任务。
  • 我认为它在 var 上运行,我需要它在所有文件夹中运行,如果文件夹名称是其中一个 var,则执行命令
  • 是的,这正是它的作用。你测试过吗?
  • 它什么都不做,我尝试回显文件夹名称,什么都不做