将变量作为批处理字符串处理

问题描述:

我正在尝试创建一个批处理脚本,该脚本创建一个名为MigrateOldStickyNotes.bat的新批处理脚本,其中包含一些简单的命令。将变量作为批处理字符串处理

@echo SET CP=%~dp0> "%cp%\%ME%\%ME%\MigrateOldStickyNotes.bat" 
@echo SET ME=%Username%>> "%cp%\%ME%\%ME%\MigrateOldStickyNotes.bat" 

但不是创建一个新的批处理文件与这些看起来完全像这样的行。

SET CP=%~dp0 
SET ME=%Username% 

它会创建一个新文件并将该变量用作输入。这将导致我这些线。

SET CP=\\sosy-nas\Backup\ 
SET ME=itcebrha 

我该如何让脚本将变量视为字符串而不是把它当作变量来处理。

+6

用百分号转义百分号,比如'SET CP = %%〜dp0' – jeb

+0

谢谢。简单而简单:) –

用百分号跳出百分号,如SET CP=%%~dp0
所有其他(特殊)字符都会使用插入符号^进行转义。

原因是百分号在批解析器的另一个阶段中处理的比所有其他字符。
这也是为什么转义百分号只能在批处理文件中工作,而不能在命令行上工作的原因,因为cmd行解析器对百分号具有不同的扩展规则。

+0

也是一个很好的答案:) –