Передача команды Cmd в приложение C#
У меня есть программа, которая принимает команду 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;
}
}
2 ответа
Решение
Я думаю, что ответ Джимми Хоффа правильный, чтобы решить его, вы можете объединить "старт" в начале команды.
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, а ваше приложение просто возвращает код возврата из выполнения.