Передача команды 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, а ваше приложение просто возвращает код возврата из выполнения.

Другие вопросы по тегам