我环顾了一会儿,并没有在我遇到的问题上找到许多有希望的文章。将C#字符串传递给批处理
我正在尝试编写一个程序,该程序将使用openFileDialog向用户查询文件的路径,并将输出保存为C#中的字符串。我想要做的是在命令脚本中使用所述路径,该命令脚本将文件复制到计算机的另一部分以供我正在编写的程序使用。
我对C#来说很新,所以如果可能的话,我将不胜感激。我至今明白,我必须建立一个新的过程来运行批处理命令,但我永远无法找到如何将C#字符串传递给批处理脚本的好例子。
感谢
我环顾了一会儿,并没有在我遇到的问题上找到许多有希望的文章。将C#字符串传递给批处理
我正在尝试编写一个程序,该程序将使用openFileDialog向用户查询文件的路径,并将输出保存为C#中的字符串。我想要做的是在命令脚本中使用所述路径,该命令脚本将文件复制到计算机的另一部分以供我正在编写的程序使用。
我对C#来说很新,所以如果可能的话,我将不胜感激。我至今明白,我必须建立一个新的过程来运行批处理命令,但我永远无法找到如何将C#字符串传递给批处理脚本的好例子。
感谢
为什么不使用.NET的内置Copy方法?您也可以使用Backgroundworker或Task使其发生在不同的线程上。
如果您必须启动一个单独的进程,那么您可以使用Process.Start并将ProcessInfo设置为路径并以此方式传递参数。
如果你的脚本是漫长的,我会用一个StringBuilder
那么字符串写入文件:
// set srcFilename and xcopyOptions (like /Y, for example)
var sb = new StringBuilder();
sb.Append("XCOPY ")
.Append(xcopyOptions)
.Append(" ")
.Append(srcFilename)
.Append(" ")
.AppendLine(dstDir);
// repeat for as many copy commands as you want
// ...
File.WriteAllText(scriptFilename, sb.ToString());
除了已经上市后,如果您真的要使用批处理,通过它的变量与可执行文件的传递参数相同。
分配参数,这将像参数,以批料的变量被传递。
Process thisProcess = new Process(); thisProcess.StartInfo.CreateNoWindow = true; //不需要窗口
thisProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
thisProcess.StartInfo.WorkingDirectory = @“DirectoryOfTheBacth”;
thisProcess.StartInfo.FileName =“BatchFileName”;
thisProcess.StartInfo.Arguments =“parameters”;
thisProcess.StartInfo.UseShellExecute = false; // NO SHELL EXECUTE
thisProcess.StartInfo.RedirectStandardOutput = true; // STDO重定向,所以我们可以读到什么是正在发生的
thisProcess.Start(); //最后,启动过程
这*可能*该脚本做得更多然后只要复制,它已经被人写的,它的工作原理,所以重写它是理想的非... – Tigran 2012-04-27 21:19:38
我不知道有一个副本脚本。我很抱歉,我对C#非常陌生,在过去的几天里只经历了一次速成课程,而且学习了各种编程知识。 – 2012-04-27 21:21:30
@StephenR没问题,这就是为什么我建议你直接回答你的问题。我已经为Tigran更新了我的答案,以防万一您必须启动另一个进程,也是 – 2012-04-27 21:23:26