Сеть COPY Cmds в C # - файл не найден? - PullRequest
1 голос
/ 18 марта 2011

Я пытаюсь скопировать файл в сетевую папку на подключенном диске. Я протестировал COPY в моей командной строке, которая сработала, поэтому я решил попробовать автоматизировать процесс в C #.

ProcessStartInfo PInfo;
Process P;
PInfo = new ProcessStartInfo("COPY \"" + "c:\\test\\test.txt" + "\" \"" + "w:\\test\\what.txt" + "\"", @"/Z");
PInfo.CreateNoWindow = false; //nowindow
PInfo.UseShellExecute = true; //use shell
P = Process.Start(PInfo);
P.WaitForExit(5000); //give it some time to finish
P.Close();

Вызывает исключение: System.ComponentModel.Win32Exception (0x80004005): системе не удается найти указанный файл

Чего мне не хватает? Должен ли я добавить что-нибудь еще в параметры команды?

Я пробовал File.Copy, но он не работает (File.Exists("<mappeddriveletter>:\\folder\\file.txt");), выдает false.

Ответы [ 3 ]

2 голосов
/ 18 марта 2011

Ну, для технического бита: copy сам по себе не исполняемый файл, а просто команда, интерпретируемая cmd.Таким образом, по сути, вам нужно запустить cmd.exe как процесс и передать ему флаг, который заставляет его выполнить команду copy (которую вы также должны будете указать в качестве параметра).

В любом случае, я бы присоединился к Promit и рекомендовал бы изучить File.Copy или что-то подобное.

e: Ах, пропустил ваш комментарий к ответу Promit, когда я опубликовал это.

2 голосов
/ 18 марта 2011

Этот пост содержит пример

Выполнить команды командной строки

как это сделать правильно. Вам нужно вызвать cmd.exe с /c copy в качестве параметра.

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

Не было бы намного проще использовать File.Copy ?

...