如何逃避%%

时间:2016-07-31 02:35:44

标签: batch-file

我正在尝试编写一个非常简单的批处理脚本,它回显到另一个批处理文件,以保持组织有序。在这样做的同时,我注意到如果我做了类似的事情:

@echo if %cd%==C:\Users\whoever\Desktop msg * success

然后它将回显当前目录,因为我输入“%cd%”。我如何逃避这一点,以便它改为回声%cd%,而不是:C:\Users\whoever\desktop\file

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

逃避可能有点不直观。

在批量文件中,%与另一个%进行转义:echo %%cd%%

在命令行上你无法逃脱它们,但是"假冒逃跑"它们带有插入符号:echo ^%cd^%可以解决问题,因为cmd显示%varName%,如果varname未定义,那么尝试显示未定义的变量{ {1}}显示cd^(解析器吞下插入符号)。起始的插入符号并不是真正需要的,而是使得"假冒的"更一致。

%cd%

答案 1 :(得分:2)

我不知道一个优雅的单行,但以下将起作用:

@echo off
set "random=cd"
echo %%%random%%% = "%cd%"
set "random="

输出:

%cd% = "C:\Users\whoever\desktop\file"

请注意,的临时变量需要命名为random,因为它是保留名称的机会低于它会覆盖其他一些已定义的变量。

[编辑] 如果重复使用该构造,则替代方案如下(以使用专用环境变量pct为代价):

@echo off
set "pct=%%"
echo %pct%cd%pct% = "%cd%"