Windows批处理脚本写入&符号到文件的问题求助
批处理动态生成时echo特殊命令的解决方法
双重转义法(最直接可靠)
针对>>、&这类特殊字符,在原批处理里做双重转义,同时把需要保留到目标文件的%写成%%:echo myprogram.exe ^>^> %%LOG_FILE%% 2^>^&1 >> generated.bat执行后,生成的
generated.bat里会正确出现myprogram.exe >> %LOG_FILE% 2>&1。原理是原批处理解析时,^>会被解析为>,^&会被解析为&,%%会被解析为%,最终完整输出目标格式。延迟变量扩展法
先开启延迟变量扩展,把要写入的内容赋值给变量后再输出:@echo off setlocal enabledelayedexpansion set "output_line=myprogram.exe >> %%LOG_FILE%% 2^>&1" echo !output_line! >> generated.bat endlocal这里用
!output_line!而非%output_line%,是因为延迟扩展会避免变量解析时把&当成命令分隔符,确保整行内容被完整写入目标文件。问题根源说明
之前出现内容截断,是因为2>&1里的&在原批处理中被识别成了命令分隔符,系统会把1当作下一条命令执行,所以只输出到2>&就停止了。必须对&做转义,同时处理好%的保留规则,才能完整输出目标命令。
内容的提问来源于stack exchange,提问作者Aleks G
相关产品推荐
相关产品推荐

