я пытаюсь выполнить .bat файл через C# консольное приложение, используя код здесь: Решение Service hangs up at WaitForExit after calling batch fileзапуск пакетного файла через консольное приложение C#. Команды игнорируются
Кевина вроде работает, но некоторые команды в моем файле .bat игнорируются по какой-то причине, но когда я вручную исполняю файл .bat, все команды работают нормально.
например. Команда xcopy не работает при выполнении .bat из консольного приложения, но команда запуска работает нормально.
Любая идея, почему это происходит?
p.s. недавно я обнаружил, что если программа запускается из командной строки, она работает хорошо. Как так? Тем не менее, мне нужно поставить его на автозапуск, так что это не решит проблему.
Кроме того, если запущен, нажав на исполняемый файл, вывод показывает
хсору folder1 folder2
но если запущен из командной строки, вывод показывает
хсору folder1 folder2
-л/чего-л .smth скопировано
....
5 файлов, скопированных.
И это фактически копируется.
proc.StartInfo.FileName = target;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit
(
(timeout <= 0)
? int.MaxValue : timeout * NO_MILLISECONDS_IN_A_SECOND *
NO_SECONDS_IN_A_MINUTE
);
errorMessage = proc.StandardError.ReadToEnd();
proc.WaitForExit();
outputMessage = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
Вы можете указать, какие команды проигнорировать? – Shai
Вы установили 'WorkDir' внутри вашего процесса, прежде чем запускать его? Если ваш пакетный файл не смог найти файлы, определенные с помощью частичного пути ... – Marco
Возможно, это проблема безопасности (у порожденного процесса нет доступа на запись к некоторым вашим файлам/дорожкам). Перегрузка метода 'Start()' позволяет указать имя пользователя/пароль. http://msdn.microsoft.com/en-us/library/sxf2saat.aspx –