Как запустить следующую команду пакетного файла в C#

У меня есть два пакетных файла,

Первая содержит несколько команд, каждая из которых имеет два параметра, и она вызывает batch2, например

C:\batch2 test1 "Hello this is a test"
C:\batch2 test2 "Hello this is a test as well"

Второй содержит вызов.exe и принимает параметры из batch1.

C:\test.exe %1 %2

.Exe делает вещи, и конец этого следующий:

Console.WriteLine("complete", dir, output);
output.Close();
Console.Read();

Проблема в том, что после запуска первой строки batch1 вторая строка никогда не запускается. Что я могу добавить в конец.exe (программа C#), чтобы batch1 работал для каждой последующей строки?

Или, как я могу сохранить запуск batch1 после первой строки?

2 ответа

Решение

Кажется, есть неправильное понимание того, что вызов в пакетном против C#.

На самом деле из вашего кода вы не вызываете batch2, а просто запускаете его,
что не оставляет возможности вернуться к batch1. Увидеть call /? или посетите http://ss64.com/nt/call.html

:: Batch1.cmd
@Echo off
Call "C:\batch2.cmd" test1 "Hello this is a test"
Call "C:\batch2.cmd" test2 "Hello this is a test as well"

:: Batch2.cmd
@Echo off
C:\test.exe %*

Если вы не измените какие-либо параметры в Batch2.cmd Вы можете передать их все в одном без изменений с %*

Вы не можете добавить к исполняемому файлу ничего, что могло бы вам помочь. Это ждет. В лучшем случае вы можете удалить строку, которая ждет.

Если вы не можете, вы можете изменить ваш командный файл так, чтобы он не ждал завершения исполняемого файла:

start C:\test.exe %1 %2

Это заставляет ваши два исполняемых файла работать параллельно.

Или вы можете вместо этого вернуть Return к вашему exe:

echo.|C:\test.exe %1 %2

Хаки, но это должно работать.

Другие вопросы по тегам