批处理脚本写入变量内容到文件时如何避免输出“ECHO is off”?
批处理脚本写入变量内容到文件时如何避免输出“ECHO is off”?
嘿,我来帮你搞定这个问题!你碰到的“ECHO is off”提示,其实是脚本里的一个顺序逻辑错误导致的,咱们一步步捋清楚:
问题根源
你看,你的脚本里先执行了del %firstfile%删掉了第一个文件,然后才尝试用set /p content=<%firstfile%读取它的内容——这时候文件已经没了,变量%content%自然是空的。当你执行echo %content%时,批处理发现变量为空,就会输出默认的“ECHO is off”提示。
修正方案1:调整顺序+优化echo命令
把读取文件和删除文件的顺序调换,同时优化echo命令避免空变量触发提示,修正后的脚本如下:
@echo off color 0c title vmfMerge v1.1 by bub echo Welcome to vmfMerge! Note that the first file you choose will be DELETED! echo Name and extension of vmf? (example.vmf) set /p firstfile= cls echo Name and extension of second vmf? set /p secondfile= cls :: 先读取文件内容到变量,再删除原文件 set /p content=<%firstfile% del %firstfile% :: 用echo.替代echo,即使变量为空也只会输出空行,不会出现ECHO提示 echo.%content% >> %secondfile%
更稳妥的方案2:直接用type命令追加内容
如果你的VMF文件是多行内容,set /p只能读取第一行,这时候用type命令直接追加整个文件内容会更靠谱,连变量都不需要:
@echo off color 0c title vmfMerge v1.1 by bub echo Welcome to vmfMerge! Note that the first file you choose will be DELETED! echo Name and extension of vmf? (example.vmf) set /p firstfile= cls echo Name and extension of second vmf? set /p secondfile= cls :: 直接把第一个文件的所有内容追加到第二个文件 type %firstfile% >> %secondfile% del %firstfile%
这个方法既避免了空变量的问题,还能完整保留原文件的所有行内容,完全适配你的需求~
备注:内容来源于stack exchange,提问作者Ethan Cato
相关产品推荐
相关产品推荐

