Batch file 在批处理文件中使用icacls(括号问题)
我需要将一个文件夹复制到一个特定位置的PC列表中,然后使每个人都能完全控制该文件夹,并将其继承到所有子文件夹和文件中。 我创建了一个txt文件,里面有PC的列表,然后将其包含在bat文件中。 它执行一个简单的ping以查看是否继续复制-然后执行一个简单的for/if/else语句-它通常适用于其他“维护”任务。。。 但是,在本例中,我无法使icacls命令正常工作。 我最初使用的命令是:Batch file 在批处理文件中使用icacls(括号问题),batch-file,brackets,icacls,Batch File,Brackets,Icacls,我需要将一个文件夹复制到一个特定位置的PC列表中,然后使每个人都能完全控制该文件夹,并将其继承到所有子文件夹和文件中。 我创建了一个txt文件,里面有PC的列表,然后将其包含在bat文件中。 它执行一个简单的ping以查看是否继续复制-然后执行一个简单的for/if/else语句-它通常适用于其他“维护”任务。。。 但是,在本例中,我无法使icacls命令正常工作。 我最初使用的命令是: for /f %%a in (add_pclist.txt) do ( ping -n 2 %%a if
for /f %%a in (add_pclist.txt) do (
ping -n 2 %%a
if errorlevel 1 (
echo %%a >> Test_PCFileCopyFail.txt
) else (
xcopy/e/h/i/y FOLDERNAME "\\%%a\c$\users\Public\Desktop"
icacls "\\%%a\c$\users\Public\Desktop\HMI" /grant Everyone:F /T
echo %%a >> Test_PCFileCopySuccess.txt
)
)
然而,尽管这样做会复制文件夹,并使文件夹处于完全控制状态——当我查看“属性”中的“安全性”选项卡时,每个人都没有记号。我选择Advanced,虽然它将所有人显示为完全控制,但“Apple to”设置为“仅此文件夹”-我希望它显示“此文件夹、子文件夹和文件”
如果我手动运行cmd:
icacls "\\%%a\c$\users\Public\Desktop\HMI" /grant Everyone:(OI)(CI)F /T
这很有效。但是,当我将此命令放入批处理文件时,它给出了一个错误
(CI was unexpected at this time.
有没有一种方法可以在没有(OI)(CI)部分的情况下执行“应用于”部分?否则,如何将其包含在批处理文件中而不出现错误?我还尝试在原始icacls命令中包含/heritation:e,但没有成功
非常感谢 由于
icacls
命令包含在代码块
(一个括号内的命令序列)中,因此)
被视为关闭该代码块
,因此cmd
后面的字符被视为下一个命令
解决方案是将任何)
转义为文本,而不是用插入符号关闭代码块的特殊字符
将有问题的)
替换为^)
(将有多个),以便)
被视为常规字符,而不是特殊字符。。。icacls“\\%%a\c$\users\Public\Desktop\HMI”/授予每个人:(OI^)(CI^)F/T?尝试它比问问题更快。。。?