Передача команда CMD на приложение C #
-
26-09-2019 - |
Вопрос
У меня есть программа, которая принимает команду CMD в качестве аргумента команд.
В основном вы называете это таким образом: C:\MyProgram.exe del C:\test.txt
Вышеуказанная команда работает нормально. Однако, когда я пытаюсь сделать команду xcopy, не удается:
C:\MyProgram.exe xcopy C:\test.txt C:\Temp\Test2.txt
Код программы:
class Program
{
static void Main(string[] args)
{
string command = GetCommandLineArugments(args);
// /c tells cmd that we want it to execute the command that follows and then exit.
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", @"/D /c " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = procStartInfo;
process.Start();
}
private static string GetCommandLineArugments(string[] args)
{
string retVal = string.Empty;
foreach (string arg in args)
retVal += " " + arg;
return retVal;
}
}
Решение
Я думаю, что Джимми Хоффа ответа правильно, чтобы решить его, вы можете кататенировать «начать» в начале команды.
XCopy C: Temp Test.html C: temp test2.html принесет вам окно с помощью подсказки при необходимости.
Другие советы
Я думаю, что ваше приложение работает, поэтому я попробовал команду и только что получил эту подсказку для ввода из stdin:
C:\>xcopy C:\temp\test.html C:\temp\test2.html
Does C:\temp\test2.html specify a file name
or directory name on the target
(F = file, D = directory)?
Возможно, это бомбардировка, потому что у вас нет stdin, и ваше приложение просто возвращает код возврата из выполнения.