0

我环顾了一会,并没有找到很多关于我的问题的有希望的文章。

我正在尝试编写一个程序,该程序将使用 openFileDialog 向用户查询文件的路径,并将输出保存到 C# 中的字符串。我想要用它做的是在命令脚本中使用所述路径,它将文件复制到计算机的另一部分以供我正在编写的程序使用。

我对 C# 很陌生,所以如果可能的话,我将不胜感激虚拟版本。到目前为止,我知道我必须设置一个新进程来运行批处理命令,但是我从来没有找到如何将 C# 字符串传递给批处理脚本的好例子。

谢谢

4

3 回答 3

2

为什么不直接使用 .NET 的内置Copy方法?您也可以使用BackgroundworkerTask使其发生在不同的线程上。

如果您必须启动一个单独的进程,那么您可以使用Process.Start并将 ProcessInfo 设置为路径并以这种方式传递参数。

于 2012-04-27T21:18:50.150 回答
0

如果您的脚本很长,我会使用 aStringBuilder然后将字符串写入文件:

// 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() );
于 2012-04-27T21:26:34.363 回答
0

除了已经可用的帖子之外,如果您真的想使用批处理,将变量传递给它就像将参数传递给可执行文件一样。

  • 实例进程,其中“ececutable”是一个批处理文件
  • 分配参数,它将像参数一样传递给批处理的变量。

    处理 thisProcess = new Process(); thisProcess.StartInfo.CreateNoWindow = true; //不需要窗口
    thisProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    thisProcess.StartInfo.WorkingDirectory = @"DirectoryOfTheBacth";
    thisProcess.StartInfo.FileName = "批处理文件名";
    thisProcess.StartInfo.Arguments = "参数";
    thisProcess.StartInfo.UseShellExecute = false; //NO SHELL 执行
    thisProcess.StartInfo.RedirectStandardOutput = true; //STDO 重定向,所以我们可以看到发生了什么
    thisProcess.Start(); // 最后,开始进程

如何将参数从 C# 传递到批处理文件?

于 2012-04-27T21:26:53.343 回答