Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top