Как запустить следующую команду пакетного файла в 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
Хаки, но это должно работать.