Windows CMD 배치, 시작 및 출력 리디렉션


34

배치 파일에서 두 개의 프로그램을 동시에 실행하고 첫 번째 프로그램의 출력을 다음과 같은 텍스트 파일로 리디렉션하고 싶습니다.

start python 1st.py arg1 arg2 > out.txt
start 2nd.exe %1 arg2 arg3

프로그램이 예상대로 실행되는 동안 모든 출력이 stdout에 표시됩니다.


이것은 작동해야합니다. 아무것도 모른다면 1st.py가 출력으로 재미있는 일을하고 있는지 궁금합니다.
zpletan

아니요, 그러나 stderr에 씁니다.
없음

그렇기 >때문에 stdout 만 리디렉션합니다 (제 생각에). 어쨌든 이미 필요한 것을 가지고있는 것 같습니다.
zpletan

답변:


35

이런 식으로해야 할 수도 있습니다.

start cmd /c python 1st.py arg1 arg2 ^> out.txt

감사합니다,하지만 그것은 나를 위해 작동하지 않습니다 (out.txt는 로컬 디렉토리에도 생성되지 않습니다)
없음

CScript와 VBscript로 테스트 했으므로 아이디어가 좋습니다. 큰 따옴표와 같이 여기에 나열되지 않은 명령 줄에서 "추가"작업을하고 있습니까?
패트릭 시모어

죄송합니다, 뭔가 잘못되었습니다-작동합니다!
없음

@ 패트릭 시모어, 답변 주셔서 감사합니다! .bat 파일없이 어떻게합니까? cmd : python.exe ^> python_out.txt 에서 작동하지 않습니다 . 오류가 발생했습니다 : python.exe : '>'파일을 열 수 없습니다 : [Errno 22] Invalid argument .
neo

7

리디렉션은 start명령에 적용 되지만 cmd.exe실행 되는 인스턴스에는 적용 되지 않습니다 .

경우 >운전자가 이스케이프, 모든 작동합니다 :

start 1st.py arg1 arg2 ^> out.txt

(stderr도 리디렉션하려면 사용 2^>하십시오.)


4
고맙지 만 저에게는 효과가 없습니다.
없음

5

또한 stderr과 stdout을 모두 리디렉션하려면이 기능이 적합합니다.

통화 시작 지연 .bat ^ 1 ^> log.txt ^ 2 ^> ^ & ^ 1

모든 캐릭터는 기본적으로 탈출해야합니다. 이 명령은 일반적으로 다음과 같습니다.

delay.bat 1> log.txt 2> & 1


5

나를 위해 요령은 명령을 별도의 배치 파일로 옮기는 것이 었습니다.

rem this first batch file triggers the second one:
start the_second.bat arg1 arg2 out.txt

the_second.bat는 다음과 같습니다.

python 1st.py %1 %2 > %3

이것은 정답에 비해 매우 우아하지 않은 해결 방법입니다.
DavidPostill

2
"정답"은 비슷한 문제로 작동하지 않았으며 사람들이 적어도 알고 싶어하는 해결책 일 수 있다고 생각했습니다.
Florian Straub

동의하지 않아야합니다. 명령에서 캐릭터를 이스케이프 처리하는 올바른 방법을 배우는 것이 훨씬 좋습니다.
DavidPostill

>>를 사용하여 출력 첨부를 피하는 방법을 알려주십시오.
Florian Straub

벌써 말 했어요 수락 된 답변을 읽으십시오.
DavidPostill
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.