将变量作为批处理字符串处理
问题描述:
我正在尝试创建一个批处理脚本,该脚本创建一个名为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
我该如何让脚本将变量视为字符串而不是把它当作变量来处理。
答
用百分号跳出百分号,如SET CP=%%~dp0
。
所有其他(特殊)字符都会使用插入符号^
进行转义。
原因是百分号在批解析器的另一个阶段中处理的比所有其他字符。
这也是为什么转义百分号只能在批处理文件中工作,而不能在命令行上工作的原因,因为cmd行解析器对百分号具有不同的扩展规则。
+0
也是一个很好的答案:) –
用百分号转义百分号,比如'SET CP = %%〜dp0' – jeb
谢谢。简单而简单:) –