从 Windows 批处理脚本将 & 号写入文件时出现问题

Issues writing ampersand into a file from windows batch script

提问人:Aleks G 提问时间:2/27/2023 更新时间:2/28/2023 访问量:55

问:

由于此问题范围之外的原因,我需要从另一个批处理文件动态创建一个批处理文件。从本质上讲,我有一个严肃的命令,如下所示:

echo some command > newfile.cmd
echo more commands >> newfile.cmd
echo and more commands >> newfile.cmd

除了一件特定的事情外,所有这些都可以正常工作。其中一个命令是这样的:

myprogram.exe >> %LOG_FILE% 2>&1

在我的一生中,我无法将其正确输出到新的批处理文件中。我已经尝试了各种选项,用 ^ char 转义 & 符号,将整个事情放入双引号字符串赋值中,双转义 - 几乎所有东西!我管理的最好的是输出

myprogram.exe >> %LOG_FILE% 2>&

但是,其他所有内容都会被截断。我怎样才能实现我的需求?

Windows 批处理文件 &

评论

1赞 Gerhard 2/28/2023
如果日志文件变量也需要按原样发送到批处理,那么您还需要通过加倍它们来转义。%echo myprogram.exe ^>^> %%LOG_FILE%% 2^>^&1

答:

0赞 Compo 2/28/2023 #1

您将使用插入符号转义问题字符,例如重定向 |和 & 符号:<>&^

@(
    echo some command
    echo myprogram.exe 1^>^>"%LOG_FILE%" 2^>^&1
    echo and (even^) more commands
) 1>"newfile.cmd"

如果使用此方法,则仅重定向一次,而不是多次重定向较慢的重定向,则还必须使用插入符号转义嵌套的右括号,如上所示。)^