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:";


출처 :데브피아

+ Recent posts