我需要将文件夹复制到PC的列表到特定位置 - 然后将该文件夹完全控制到Everyone并将其继承到所有子文件夹和文件。 我创建了一个包含PC列表的txt文件,然后将其包含在bat文件中。 它执行一个简单的ping来查看是否继续复制 - 然后执行一个简单的for / if / else语句 - 它通常适用于其他“维护”任务... 但是,在这种情况下,我无法使icacls命令正常工作。 我最初使用的命令是:
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
)
)
但是,尽管这样做了副本并且它使文件夹完全控制 - 当我查看属性中的“安全”选项卡时,每个人都没有刻度。我选择高级,虽然它将Everyone显示为完全控制,但'苹果'设置为'仅此文件夹' - 我希望它说'此文件夹,子文件夹和文件'。
如果我手动运行cmd:
icacls "\\%%a\c$\users\Public\Desktop\HMI" /grant Everyone:(OI)(CI)F /T
这是有效的。但是,当我将此命令放入批处理文件时,它会出错
(CI was unexpected at this time.
有没有办法在没有(OI)(CI)部分的情况下执行'适用于'部分 - 否则如何将其包含在批处理文件中而不会出现错误?我也试过包含/继承:e在原来的icacls命令中无济于事。
非常感谢!
答案 0 :(得分:1)
由于icacls
命令包含在code block
(带括号的命令序列)中,因此可以看到)
关闭code block
以便查看cmd
后面的字符{1}}成为下一个命令。
解决方案是将escape
任意)
打算用作文字,而不是使用插入符code block
关闭^
的特殊字符。
将违规)
替换为^)
(将有多个),以便将)
视为常规字符,而不是特殊字符。