我正在尝试编写一个非常简单的批处理脚本,它回显到另一个批处理文件,以保持组织有序。在这样做的同时,我注意到如果我做了类似的事情:
@echo if %cd%==C:\Users\whoever\Desktop msg * success
然后它将回显当前目录,因为我输入“%cd%”。我如何逃避这一点,以便它改为回声%cd%,而不是:C:\Users\whoever\desktop\file
感谢您的帮助!
答案 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%"