Запустить командные окна и запустить команды внутри
Мне нужно запустить командное окно с некоторыми аргументами и запустить больше команд внутри.
Например, запустите test.cmd и запустите mkdir.
Я могу запустить test.cmd с processstartinfo, но я не уверен, как запускать дальнейшие команды. Могу ли я передать дополнительные аргументы в процесс test.cmd?
Как мне это сделать?
Невозможно добавить комментарии к ответу... SO здесь.
Андреа, Это то, что я искал. Однако приведенный выше код не работает для меня.
Я запускаю test.cmd, который представляет собой новую командную среду (например, среду сборки razzle), и мне нужно запустить дополнительные команды.
psi.FileName = @"c:\test.cmd";
psi.Arguments = @"arg0 arg1 arg2";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.StandardInput.WriteLine(@"dir>c:\results.txt");
p.StandardInput.WriteLine(@"dir>c:\results2.txt");
Ответы
Ответ 1
Вы можете отправить дополнительные команды в cmd.exe с помощью процесса
стандартный ввод. Вы должны перенаправить его таким образом:
var startInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
RedirectStandardInput = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
var process = new Process {StartInfo = startInfo};
process.Start();
process.StandardInput.WriteLine(@"dir>c:\results.txt");
process.StandardInput.WriteLine(@"dir>c:\results2.txt");
process.StandardInput.WriteLine("exit");
process.WaitForExit();
Не забудьте записать "exit" в качестве последней команды, иначе процесс cmd не завершится правильно...
Ответ 2
Параметр /c
на cmd
.
ProcessStartInfo start = new ProcessStartInfo("cmd.exe", "/c pause");
Process.Start(start);
(pause
- просто пример того, что вы можете запустить)
Но для создания каталога вы можете сделать это и большинство других файловых операций из С# напрямую
System.IO.Directory.CreateDirectory(@"c:\foo\bar");
Начать cmd из С# полезно, только если у вас есть большой bat файл, который вы не хотите реплицировать в С#.
Ответ 3
Может быть этот комментарий полезен. Это то, что вы имеете в виду?
Ответ 4
Чего вы пытаетесь достичь? Вам действительно нужно открыть командное окно, или вам нужно просто создать каталог, например?
mkdir
- это исполняемый файл Windows - вы можете запустить эту программу так же, как вы запускаете cmd
- нет необходимости сначала запускать процесс командного окна.
Вы также можете создать пакетный файл, содержащий все команды, которые вы хотите запустить, а затем просто запустить его с помощью уже используемых классов Process и ProcessStartInfo.