簡體   English   中英

有什么方法可以重定向 Windows 命令行中使用“start”運行的命令的 stderr 輸出?

[英]Is there any way to redirect stderr output from a command run with "start" in the Windows command line?

我有一個程序要自動運行,因為它需要一段時間才能完成。 出於某種原因,它將所有內容輸出到 stderr 而不是 stdout,我想檢查它的進度,所以我發現自己需要在 start 命令中重定向 stderr 輸出。

我試過這個:

start "My_Program" "C:\Users\Me\my_program.exe" --some --presets --for 
--my_program.exe --output "C:\Users\Me\output_file_for_my_program" 
"C:\Users\Me\input_file_for_my_program" 2>"C:\Users\Me\my_program_output.log"

但事實證明,重定向是由 start 獲取的,因此我得到了一個帶有start結果的 0 字節文件 - 即什么都沒有。 有沒有辦法讓輸出重定向以某種方式附加到 my_program 的輸出?

我已經嘗試過轉義,但^2>2^>似乎都不起作用。 任何幫助將不勝感激!

嘗試這個:

start "My_Program" "%SystemRoot%\System32\cmd.exe" /c ""C:\Users\Me\my_program.exe" --some --presets --for --my_program.exe --output "C:\Users\Me\output_file_for_my_program" "C:\Users\Me\input_file_for_my_program" 2>"C:\Users\Me\my_program_output.log""

顯然,這里沒有“我的程序”,我本身無法對此進行測試。 如果我們認為內置的“FIND.EXE”命令在 STDERR 上返回“找不到文件 - 文件名”,則以下內容對我有用:

start "My_Program" "%SystemRoot%\System32\cmd.exe" /c "find /v /i "blarg" "c:\not a real file.txt" 2> C:\stderr.txt"

使用 /B 開關。 沒有創建新窗口並保留重定向,但該命令會根據需要在后台運行。

start /B test.bat >test.txt <nul

測試.bat:

@echo off
echo bbb
sleep 10
echo ccc
exit

我使用了以下命令並且它有效:

start /affinity 2 /wait cmd.exe /C myprog.exe parameter1 parameter2 1^> .\\a.log 2>> .\\b.log

參考: http : //www.pcreview.co.uk/forums/redirect-standard-output-w-start-command-t1467634.html

阿布舍克

如何通過批處理文件中的重定向調用您的命令,並在批處理文件上使用 start?

以下語法似乎可以解決問題:

start /wait /b my_program.exe

這會在后台運行程序並等待它完成。 根據需要重定向 stdout 和 stderr:

start /wait /b my_program.exe > output.txt 2>&1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM