Запуск нескольких команд в CMD.EXE из программы C#? - PullRequest
1 голос
/ 11 февраля 2020

Я пытаюсь 1. запустить команду cd и 2. выполнить исполняемый файл node.js, который принимает два имени файла через окно командной строки.

Следующий код встроен в a для l oop поэтому имена переменных для переменных расширения имени файла меняются:

command_line = "/C cd C:/Users/esimons/Documents/Software/Serial_GUIC#/ComputerToArduino/images/TraxSecur-Node/TraxSecur-Node/ & node main.js " + image_extension + " " + UID_extension;

System.Diagnostics.Process.Start("CMD.exe", command_line);

Я попытался разделить команды с помощью символа &, который я видел в другом потоке, но он не работает.

Использование альтернативного подхода:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = @"C:/Users/esimons/Documents/Software/Serial_GUIC#/ComputerToArduino/images/TraxSecur-Node/TraxSecur-Node/";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.Start();
p.StandardInput.WriteLine("node main.js " + image_extension + " " + UID_extension);
p.Close();

Решение: приведенный выше код работает! Перезагрузите систему, если вы недавно установили node.js

1 Ответ

0 голосов
/ 21 февраля 2020

Решение:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = @"C:/Users/esimons/Documents/Software/Serial_GUIC#/ComputerToArduino/images/TraxSecur-Node/TraxSecur-Node/";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.Start();
p.StandardInput.WriteLine("node main.js " + image_extension + " " + UID_extension);
p.Close();
...