我正在将一个.bat文件调用到XCOPY文件夹中。无论如何都要将文件名和目的地传递到批处理文件中吗?
我的.bat文件
XCOPY %1 %2
pause
我用来调用.bat的代码就是:
process.Start(@"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat");
我试过这段代码
process.Start(@"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat" , copyfrom copyto);
因为我以前用过关闭我的comp,但它不适用于此。
由于
更新
process.StartInfo.FileName = @"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat";
process.StartInfo.Arguments = copyFrom.ToString();
process.StartInfo.Arguments = copyTo.ToString();
process.Start();
这是我正在使用的代码,但它不起作用。我从XCOPY屏幕上得到这个:
所以它看起来不像是采用完整的文件路径。 copyto和copyfrom是包含路径的变量。
更新
使用azhrei的代码:
String batch = @"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat";
String src = @"C:\Tricky File Path\Is Here\test1.txt";
String dst = @"C:\And\Goes Here\test2.txt";
String batchCmd = String.Format("\"{0}\" \"{1}\" \"{2}\"", batch, src, dst);
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = String.Format("/k \"echo {0}\"", batchCmd);
process.Start();
我收到了这个输出:
实际上并没有复制文件。
答案 0 :(得分:1)
您可以使用Arguments
属性
Process proce = new Process();
proce.StartInfo.FileName = "yourfile.exe";
proce.StartInfo.Arguments = ..;
proce.Start();
文章:http://www.c-sharpcorner.com/UploadFile/jawedmd/xcopy-using-C-Sharp-to-copy-filesfolders/
答案 1 :(得分:1)
将其替换为
var process = new Process();
process.StartInfo.FileName = @"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat";
process.StartInfo.Arguments = // my arguments
process.Start();
更好的选择是用System.IO
中的等效调用替换你的XCOPY.BAT文件正在做的事情(然后你会得到错误处理)。
答案 2 :(得分:1)
您正在启动批处理文件 - 您需要使用cmd.exe
用"
围绕每个参数(如果参数有空格,则需要)。
String batch = @"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat";
String src = @"C:\Tricky File Path\Is Here\test1.txt";
String dst = @"C:\And\Goes Here\test2.txt";
String batchCmd = String.Format("\"{0}\" \"{1}\" \"{2}\"", batch, src, dst);
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = String.Format("/k \"{0}\"", batchCmd);
process.Start();
如果您的批处理文件字面上只有xcopies,那么您只需将cmd.exe
替换为xcopy.exe
并删除/k + batch
。
答案 3 :(得分:0)