用于根据名称列表创建主目录的批处理脚本

用于根据名称列表创建主目录的批处理脚本

我正在尝试从文本文件创建具有权限的主目录。我只能让批处理文件运行第一行。有人能告诉我为什么吗?

我以管理员身份运行 go.bat 来启动脚本。

蝙蝠侠

@echo
for /f %%a in (users1.txt) do call test.bat %%a

测试脚本

@echo off
m:
cd \
mkdir %1
icacls %1 /grant %1:(OI)(CI)M 

cd %1

mkdir public
icacls public /inheritance:d
icacls public / All:(OI)(CI)(RD)
icacls public /grant All:(OI)(CI)R

mkdir private
icacls private /inheritance:d
icacls private /remove All

cd \

用户1.txt

user1
user2
user3

答案1

您可以使用熟悉的icaclsPowerShell 循环命令作为 PowerShell 的“介绍”。

像这样的事情应该可以

Get-Content C:\users.txt | ForEach-Object {
    $User = $_
    $WorkingPath = "M:\" + "$User"
    mkdir $WorkingPath

    icacls $WorkingPath /grant $User:(OI)(CI)M 

    $Public = "$WorkingPath" + "public"
    mkdir $Public
    icacls $Public /inheritance:d
    icacls $Public / All:(OI)(CI)(RD)
    icacls $Public /grant All:(OI)(CI)R

    $Private = "$WorkingPath" + "private"
    mkdir $Private
    icacls $Private /inheritance:d
    icacls $Private /remove All
}

在 PowerShell 中有Get-ACLSet-ACL用于处理权限,以及mkdir和类似命令的替代品,但这样你就可以舒适使用它。

相关内容