2013-05-09 3 views
2

У меня есть пакетный файл, который будет запускать несколько программ с помощью команды запуска DOS. Однако я не смог записать результат программы в соответствующий текстовый файл.Не удается записать результат обработки пакетного файла с помощью команды DOS START

start program1.exe > result1.txt 
start program2.exe > result2.txt 

Если мой пакетный файл просто

program1.exe > result1.txt 

Тогда результат может быть записан в result1.txt

Есть ли проблема в моем синтаксисе? Спасибо.

+0

Да, если вы наберете «start winword.exe> ​​result.log», ничего не записывается в журнал. Это обычно. – Endoro

+0

program1.exe - программа, которая выводит результаты на консоль, и я использую оператор перенаправления для записи результатов в файл. – Michael

+0

Некоторые программы не записывают свой вывод в STDOUT, они записывают в STDERR или другие потоки (например, например, java.exe). – Endoro

ответ

3

Пока программы писать на стандартный вывод, вы можете получить вывод команды наречено Start с помощью отдельного CMD и избежать оператора перенаправления

Попробуйте это:

start "" CMD /C program1.exe^>result1.txt 
start "" CMD /C program2.exe^>result2.txt 

Ex:

c:\Scripts\Batch>start "" CMD /C ping -n 1 localhost>testping1.txt 

c:\Scripts\Batch>type testping1.txt 
      *Nothing comes up because the file is empty* 
c:\Scripts\Batch>start "" CMD /C ping -n 1 localhost^>testping1.txt 

c:\Scripts\Batch>type testping1.txt 

Pinging YourComputer [::1] with 32 bytes of data: 
Reply from ::1: time<1ms 

Ping statistics for ::1: 
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss), 
Approximate round trip times in milli-seconds: 
Minimum = 0ms, Maximum = 0ms, Average = 0ms 
+2

start "" CMD/C "program1.exe> ​​result1.txt" <---, который тоже должен работать. – foxidrive

+0

Отличный ответ, это то, что мне нужно. знак равно – Michael

Смежные вопросы