Windows CMD Batch, MULAI dan pengalihan output


34

Saya ingin menjalankan dua program secara bersamaan dari file batch, dan mengarahkan output program pertama ke file teks seperti:

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

Sementara program berjalan seperti yang diharapkan, semua output ditampilkan di stdout.


Ini seharusnya berhasil. Tanpa tahu apa-apa, saya ingin tahu apakah 1st.py melakukan sesuatu yang lucu dengan output.
— zpletan

Tidak, tetapi ini menulis ke stderr.
— tidak ada

Itu sebabnya— >hanya pengalihan stdout (saya pikir). Bagaimanapun, sepertinya Anda sudah memiliki apa yang Anda butuhkan.
— zpletan

Jawaban:


35

Anda mungkin perlu melakukannya dengan cara ini:

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

Terima kasih, tetapi tidak berfungsi untuk saya (out.txt bahkan tidak dibuat di direktori lokal)
— tidak ada

Saya mengujinya dengan CScript dan VBscript, jadi idenya adalah suara. Apakah Anda melakukan sesuatu "ekstra" di baris perintah Anda yang tidak tercantum di sini, seperti tanda kutip ganda?
— Patrick Seymour

Maaf, ada yang tidak beres - itu berfungsi!
— tidak ada

@ Patrick Seymour, terima kasih atas jawaban Anda! Bagaimana saya bisa melakukan hal yang sama tanpa file .bat? Ini tidak berfungsi dari cmd: python.exe ^> python_out.txt . Saya mengalami kesalahan: python.exe: tidak bisa membuka file '>': [Errno 22] Argumen tidak valid .
— neo

7

Redirection diterapkan pada startperintah, tetapi entah bagaimana tidak untuk cmd.exeinstance yang dijalankan.

Jika >operator lolos, semuanya akan berfungsi:

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

(Jika Anda ingin mengarahkan ulang stderr juga, gunakan 2^>untuk itu.)


4
Terima kasih, tetapi tidak berhasil untuk saya.
— tidak ada

5

Selain itu, jika Anda ingin mengarahkan ulang stderr dan stdout ini berfungsi untuk saya

mulai panggilan delay.bat ^ 1 ^> log.txt ^ 2 ^> ^ & ^ 1

Sepertinya setiap karakter pada dasarnya perlu diloloskan. Perintah ini biasanya terlihat seperti ini:

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


5

Apa trik saya untuk memindahkan perintah ke file batch terpisah:

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

the_second.bat kemudian terlihat seperti ini:

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

Ini adalah solusi yang sangat tidak tepat dibandingkan dengan jawaban yang benar.
— DavidPostill

2
"Jawaban yang benar" tidak bekerja untuk saya dengan masalah serupa dan saya pikir itu mungkin solusi yang paling tidak ingin diketahui orang.
— Florian Straub

Saya harus tidak setuju. Mempelajari cara yang benar untuk melarikan diri karakter dalam perintah adalah ide yang jauh lebih baik.
— DavidPostill

Tolong ajari saya cara menghindari melampirkan output menggunakan >>.
— Florian Straub

Aku sudah bilang padamu. Baca jawaban yang diterima.
— DavidPostill
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.