Я пытаюсь выполнить команды DOS в ASP.NET 2.0. Что я имею, теперь называет Bat-файл, который, в свою очередь, называет Командный файл. Это работает (при этом конечным результатом является файл, получает ftp'ed). Однако я хотел бы вывести the Bat и Командные файлы и выполнить все в.NET. Каков формат отправки нескольких аргументов в командное окно? Вот то, что я имею теперь.
Код.NET:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "C:\\MyBat.BAT";
proc.Start();
proc.WaitForExit();
Файл the Bat похож на это (все, что он делает выполняется командный файл):
ftp.exe -s:C:\MyCMD.cmd
И вот содержание Командного файла:
open <my host>
<my user name>
<my pw>
quote site cyl pri=1 sec=1 lrecl=1786 blksize=0 recfm=fb retpd=30
put C:\MyDTLFile.dtl 'MyDTLFile.dtl'
quit
Вы используете ProcessStartInfo.Arguments для передачи аргументов:
proc.StartInfo.FileName = @"ftp.exe";
proc.StartInfo.Arguments = @"-s:C:\MyCMD.cmd";
Но - это не то, что вы хотите, поскольку вы хотите заменить cmd файл тоже. Однако содержимое не является аргументом командной строки, который передается ftp.exe. Это скорее входной скрипт. Поэтому передать содержимое в качестве аргумента не получится.
Чтобы заставить исчезнуть даже файл cmd, нужно использовать стандартный ввод и вывод. Смотрите, например, Process.StandardInput.
Если вы запускаете новый процесс, просто установите для свойства ProcessStartInfo.Arguments
строку, содержащую все ваши аргументы, как если бы вы ввели их в команду линия.
В стороне, поскольку похоже, что вы пытаетесь написать сценарий для FTP-клиента из командной строки, вас может заинтересовать клиентская библиотека C # FTP в CodeProject, или, возможно, один из ответов на этот другой вопрос о StackOverflow .