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.