Приложение c # не выполняет команду командного файла правильно - PullRequest
0 голосов
/ 04 марта 2011
public void runBatchfile(String batchfilename)
{
   try
   {
      ProcessStartInfo processInfo = new ProcessStartInfo(batchfilename);
      processInfo.UseShellExecute = false;
      Process batchProcess = new Process();
      batchProcess.StartInfo = processInfo;
      batchProcess.StartInfo.CreateNoWindow = true;
      batchProcess.Start();
      batchProcess.WaitForExit();
   }
   catch (Exception r) { }
}

runBatchfile(@"c:\lol.bat");

lol.bat содержит эти 2 строки

dir c:\ /s /b > c:\filelist.txt
exit

и когда я запускаю свой код, все, что он делает, это создает файл filelist.txt, но фактически не выполняет остальную часть команды, которая работает, если я вручную вставляю его в CMD.

Кстати, я попытался сделать расширение .cmd, и я также попытался без команды выхода, без каких-либо других результатов.

пожалуйста, помогите мне:)

Ответы [ 2 ]

1 голос
/ 04 марта 2011

На моей 64-битной машине с Windows 7 с Visual Studio 2010 запуск этого кода прямо из IDE ничего не делает.

Предполагая, что это может иметь какое-то отношение к разрешению записи в корневой каталог диска C :, я попытался запустить .exe непосредственно из окна проводника с правами администратора (щелкните правой кнопкой мыши «Запуск от имени администратора») и это сработало.

Я бы сказал, что это проблема с разрешением.

Может быть, вы могли бы перенаправить вывод в файл, расположенный в другом месте?

обновление

Я изменил командный файл так, что команда dir перенаправляется на мой рабочий стол, и она работает нормально.

0 голосов
/ 04 марта 2011

У меня тоже были проблемы с этим при звонке из C #.Обходной путь, который я обычно использую, состоит в том, чтобы физически позволить ему показывать окно при выполнении команды.Не уверен, почему это имеет значение, но это работало для меня в прошлом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...