我正在尝试从文本文件创建具有权限的主目录。我只能让批处理文件运行第一行。有人能告诉我为什么吗?
我以管理员身份运行 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
您可以使用熟悉的icacls
PowerShell 循环命令作为 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-ACL
和Set-ACL
用于处理权限,以及mkdir
和类似命令的替代品,但这样你就可以舒适使用它。