批处理生成Compile.bat时,如何输出%errorlevel%变量而不解析它?
解决批处理文件中保留%errorlevel%变量名的问题
这个问题我之前也碰到过,核心原因是当前批处理脚本会立即展开%errorlevel%这个变量,把它的当前值写入到目标文件里,而不是保留变量名本身。
要让系统不解析这个变量,只需要用双百分号%%来转义单个百分号%就行,修改后的代码如下:
ECHO if NOT "%%errorlevel%%"=="0" PAUSE >> .\%name%\Compile.bat
当你运行这段代码时,当前批处理会把%%解析成单个%,这样写入到Compile.bat里的内容就会是:
if NOT "%errorlevel%"=="0" PAUSE
简单说下原理:在批处理脚本文件中,%%是%的转义字符,用来告诉cmd“我要把这个%符号原封不动地写到文件里,不要把它当成变量来解析”。如果是在命令提示符直接执行的话,转义方式是用^%,但在批处理脚本里必须用%%才行。
内容的提问来源于stack exchange,提问作者Adk9p
相关产品推荐
相关产品推荐

