批量输出文件,不扩展变量

时间:2015-06-22 00:34:39

标签: windows batch-file

假设我有一些东西:

echo %cd%
echo %~f0

我希望将其输出到foo.bat:

echo echo %cd% > foo.bat
echo echo %~f0 >> foo.bat
但是,这不起作用,因为变量会被扩展。我能做到:

echo echo %%cd%% > foo.bat

修复第一个,但我不知道如何修复第二个。

2 个答案:

答案 0 :(得分:1)

使用另一个百分比逃避百分比,然后使用batch file escape character ^转义波浪号,例如

{{1}}

答案 1 :(得分:1)

如果您想不扩展就回显%MY_VAR%,则转义为%%MY_VAR%%无效。仅转义为%MY_VAR^%^%MY_VAR^%会按预期输出%MY_VAR%

还请注意,引号存在时也必须转义以免扩展。请参见以下示例:

set FOO=BAR
echo %FOO%
BAR
echo %%FOO%%
%BAR%
echo %FOO^%
%FOO%
echo ^%FOO^%
%FOO%
echo "%FOO%"
"BAR"
echo "%%FOO%%"
"%BAR%"
echo "%FOO^%"
"%FOO^%"
echo "^%FOO^%"
"^%FOO^%"
echo ^"%FOO%"
"BAR"
echo ^"%FOO%^"
"BAR"
echo "%FOO%^"
"BAR^"
echo ^"%FOO^%"
"%FOO%"
echo ^"^%FOO^%"
"%FOO%"
echo ^"^%FOO^%^"
"%FOO%"