Windows CMD 批处理、启动和输出重定向

non*_*one 40 batch redirection command-line

我想从一个批处理文件中同时运行两个程序,并将第一个程序的输出重定向到一个文本文件中,如:

start python 1st.py arg1 arg2 > out.txt
start 2nd.exe %1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)

当程序按预期运行时,所有输出都显示在标准输出上。

Pat*_*our 42

您可能需要这样做:

start cmd /c python 1st.py arg1 arg2 ^> out.txt
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对于追加模式,>> 需要像这样转义:^>^> (2认同)

use*_*686 8

重定向适用于start命令,但不知何故不适用于cmd.exe它运行的实例。

如果>操作符被转义,一切都应该正常工作:

start 1st.py arg1 arg2 ^> out.txt
Run Code Online (Sandbox Code Playgroud)

(如果您还想重定向 stderr,请使用2^>它。)

  • 谢谢,但它对我不起作用。 (6认同)

san*_*dos 7

此外,如果你想重定向 stderr 和 stdout 这对我有用

开始调用 delay.bat ^1^> log.txt ^2^>^&^1

似乎每个字符基本上都需要转义。该命令通常如下所示:

延迟.bat 1> log.txt 2>&1


Flo*_*aub 7

对我来说,诀窍是将命令移动到一个单独的批处理文件中:

rem this first batch file triggers the second one:
start the_second.bat arg1 arg2 out.txt
Run Code Online (Sandbox Code Playgroud)

the_second.bat 然后看起来像这样:

python 1st.py %1 %2 > %3
Run Code Online (Sandbox Code Playgroud)

  • “正确答案”对我有类似的问题不起作用,我认为这可能是人们至少可能想知道的解决方案。 (5认同)