Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在批处理文件中使用icacls(括号问题)_Batch File_Brackets_Icacls - Fatal编程技术网

Batch file 在批处理文件中使用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

我需要将一个文件夹复制到一个特定位置的PC列表中,然后使每个人都能完全控制该文件夹,并将其继承到所有子文件夹和文件中。 我创建了一个txt文件,里面有PC的列表,然后将其包含在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
)
)
然而,尽管这样做会复制文件夹,并使文件夹处于完全控制状态——当我查看“属性”中的“安全性”选项卡时,每个人都没有记号。我选择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?尝试它比问问题更快。。。?