将特殊字符从一个批处理文件写入另一个批处

时间:2013-10-21 05:42:12

标签: batch-file escaping

我正在尝试使用echo从另一个批处理文件编写。但是,有一行有特殊字符,我无法弄清楚如何写。

我有以下一行:

echo >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" >> "c:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\OrchestrationCleanUp.bat"

但是写入目标文件的是:

 "C:\Windows\system32\cacls.exe" "C:\Windows\system32\config\system" 

应该是:

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

我试过把它放在双引号中。

我已经尝试将^放在>

之前

我已尝试将其放入变量并使用双引号转义

我已经尝试将其放入变量并使用!在每一端

我已经尝试将它放在一个变量中并使用:在变量名的末尾。

1 个答案:

答案 0 :(得分:3)

需要使用^转义特殊字符,并且%符号必须加倍。试试这个:

echo之后的(会阻止某些主要字符出现问题。

echo(^>nul 2^>^&1 "%%SYSTEMROOT%%\system32\cacls.exe" "%%SYSTEMROOT%%\system32\config\system" >> "c:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\OrchestrationCleanUp.bat"