批处理文件在多个其他文件夹中创建一个文件夹并为其分配 NTFS 权限

批处理文件在多个其他文件夹中创建一个文件夹并为其分配 NTFS 权限

我有一系列文件夹,用于接收工作人员使用复印机扫描的 .pdf 文件。Windows 2000 服务器上每个业务部门一个文件夹,因此:

Scan$  
    Unit 1\  
    Unit 2\  
    Unit 3\  

我想要做的是编写一个批处理文件来创建一个名为的文件夹:

“临时区域 - 文件将在 14 天后被删除!”

并将其放入 Unit 1、2、3 的“根”文件夹中,以提醒员工不要长期将数据存储在那里。创建该文件夹后,我需要设置 NTFS 权限(可能使用),icacls以仅允许域管理员访问我创建的文件夹,这样员工就无法删除它。

我之前写过批处理文件来创建“主”文件夹,从 .txt 中读取名称,例如for /f %%a in (users.txt) do ..icacls \\filer\Personal$\Home\%%a /grant:r "Company\Domain Admins:(OI)(CI)F"

我正在努力解决这个问题,任何帮助都值得感激:-)

答案1

您应该能够使用这个简单的脚本来实现这一点:

@ECHO off

SET _Path=\\unc\scan$
SET _FolderName=Temp area - files will be deleted after 14 days!

for /f "delims=" %%a in ('dir "%_Path%" /B /R /AD') DO (
    mkdir "%_Path%\%%a\%_FolderName%"
    icacls "%_Path%\%%a\%_FolderName%" <...>
)

分解

  • SET _Path=\\unc\scan$Unit 1设置一个变量,用于保存包含、Unit 2、文件夹的文件夹路径Unit 3。仅在一个地方设置此变量可使以后更改更加容易
  • SET _FolderName=Temp area - files will be deleted after 14 days!设置一个变量,保存要创建并锁定的文件夹的名称
  • dir "%_Path%" /B /AD列出指定路径中的子目录
  • for /f "delims=" %%a in ('dir "%_Path%" /B /R /AD') DO将循环遍历子目录
  • mkdir "%_Path%\%%a\%_FolderName%"使用指定的文件夹名称创建新的子目录
  • icacls "%_Path%\%%a\%_FolderName%" <...>将运行您的命令icacls来设置权限。您必须用您想要设置的<...>任何内容/grant或权限进行替换。/deny

参考

相关内容