Windows CMD Toplu İş, BAŞLAT ve çıktı yönlendirmesi


34

İki programı aynı anda bir toplu iş dosyasından çalıştırmak ve ilk programın çıktısını aşağıdaki gibi bir metin dosyasına yönlendirmek istiyorum:

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

Programlar beklendiği gibi çalışırken, tüm çıktılar stdout'ta gösterilir.


Bu işe yaramalı. Hiçbir şey bilmeden, 1st.py'nin çıktıyla eğlenceli bir şey yapıp yapmadığını merak ediyorum.
zpletan

Hayır, ama stderr'e yazar.
Yok

Bu >yüzden - sadece stdout'u yönlendirir (bence). Her durumda, ihtiyacınız olan şey zaten sizde var gibi görünüyor.
zpletan 21:11

Yanıtlar:


35

Bu şekilde yapmanız gerekebilir:

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

Teşekkürler, ama benim için işe yaramıyor (out.txt yerel dizinde bile oluşturulmadı)
hiçbiri

CScript ve bir VBscript ile test ettim, bu yüzden fikir sağlam. Komut satırında burada listelenmeyen, çift tırnak işareti gibi "fazla" bir şey mi yapıyorsun?
Patrick Seymour

Üzgünüz, bir şeyler ters gitti - işe yarıyor!
hiçbiri

@Patrick Seymour, cevabınız için teşekkür ederim! Aynı dosyayı .bat dosyası olmadan nasıl yapabilirim? Bu cmd'den çalışmıyor: python.exe ^> python_out.txt . Bir hata yaptım: python.exe: '>' dosyasını açamıyorum: [Errno 22] Geçersiz değişken .
neo

7

Yeniden yönlendirme startkomuta uygulanır , ancak bir şekilde cmd.exeçalıştığı örneğe uygulanmaz.

Eğer >operatör kaçan edilir, her şey çalışmalıdır:

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

(Stderr'i de yönlendirmek istiyorsanız, 2^>bunun için kullanın .)


4
Teşekkürler, ama benim için işe yaramıyor.
hiçbiri

5

Ayrıca, hem stderr'yi hem de stdout'u yeniden yönlendirmek istiyorsanız bu benim için çalışıyor.

aramayı başlat delay.bat ^ 1 ^> log.txt ^ 2 ^> ^ & ^ 1

Her karakterin temelde kaçması gerekiyor gibi görünüyor. Bu komut normalde şöyle görünür:

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


5

Benim için numara, komutu ayrı bir toplu iş dosyasına taşımaktı:

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

the_second.bat sonra şöyle görünür:

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

Bu, doğru cevaba göre çok kararsız bir geçici çözümdür.
DavidPostill

2
"Doğru cevap" benim için benzer bir sorunla çalışmadı ve insanların en azından bilmek isteyebilecekleri bir çözüm olabileceğini düşündüm.
Florian Straub

Katılmıyorum Komuttaki karakterlerden kaçmanın doğru yolunu öğrenmek çok daha iyi bir fikirdir.
DavidPostill

Lütfen bana >> kullanarak çıktının nasıl kaçılacağını öğretin.
Florian Straub

Ben zaten söyledim. Kabul edilen cevabı oku.
DavidPostill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.