Process p = new Process();
ProcessStartInfo pinfo = new ProcessStartInfo();
pinfo.FileName = "copy";
pinfo.Arguments = "test.txt test1.txt";
p.StartInfo = pinfo;
p.Start();
이렇게 실행을 하면 파일을 찾을 수 없다고 나옵니다.
첨에는 인자로 준 파일이 없나 했는데 실제로는 Process에서 실행하는 명령의 파일 이름은 실제 존재하는 exe 실행 파일을 의미 합니다.
제가 실행 하려고 했던 copy 명령은 실제로는 cmd.exe 파일의 내부 명령입니다.
그래서 파일을 찾을 수 없다고 하는 것입니다.
하여간 하다보니 이렇게 cmd 내장 명령을 실행 하려면 어떻게 해야 하는지도 궁금해 져서 이렇게 질문을 올립니다.
Process p = new Process();
ProcessStartInfo pinfo = new ProcessStartInfo();
p.StartInfo = pinfo;
pinfo.FileName = "cmd";
pinfo.UseShellExecute=false;
pinfo.CreateNoWindow=true;
pinfo.RedirectStandardInput=true;
pinfo.RedirectStandardError=false;
pinfo.RedirectStandardOutput=false;
p.Start();
p.StandardInput.WriteLine(@"copy G:\Test\test.xls G:\Test\test2.xls");
p.StandardInput.Flush();
//화일이 있으면 덮어쓴다.
// p.StandardInput.WriteLine(@"Y");
// p.StandardInput.Flush();
p.Close();
저는 copy 명령을 직접 날리는 것으로 했는데,,,
아래와 같이 하니까 되네요
두가지 모두 잘 됩니다.
CMD 명령어의 옵션 값으로 해결을 했습니다.
pinfo.FileName = "cmd";
pinfo.Arguments = "/C copy c:\\code39.txt com1:";
출처 :데브피아