在C#中运行bat脚本

3
我正在尝试从C#程序中运行批处理脚本,以下是我使用的代码:

我正在尝试从C#程序中运行批处理脚本,以下是我使用的代码:

 Process proc = new Process();
 proc.StartInfo.FileName = "G:\\Media\\Downloads\\print.bat";
 proc.Start();

这个脚本很简单(用于测试目的),只包含一行:

echo hello > output.txt

当我从Windows资源管理器运行脚本时,它可以正常工作,但是当我从C#代码中运行时却无法正常工作。有什么想法吗?
另外,我该如何为进程提供一个回调方法以便在完成时进行通知?
谢谢。

你能具体说明“不起作用”是什么意思吗? - Pieter van Ginkel
抱歉,脚本似乎没有运行,因为未生成文件output.txt。 - Aly
输出文件output.txt中的单词"hello"不在"G:\Media\Downloads"文件夹里吗?你确认过了吗? - Ranhiru Jude Cooray
你的文件可能在bin\Debug文件夹中。 - Hasmukh
我使用的一种诊断技巧是将以下命令添加至您的命令文件中:cd > c:\foo.txt。这样会将当前工作目录的名称写入一个文件,以便您检查。另一个提示:要将cwd更改为脚本文件夹,请执行以下操作:cd /D "%~dp0" - Detmar
1个回答

7

对我而言一切正常。我猜测当您以编程方式执行批处理文件时,您期望输出文件被创建在 下载 文件夹中,但实际上它被创建在应用程序的文件夹中。

要么在批处理文件中完全限定输出文件路径,要么更改启动进程的工作目录,如下所示:

proc.StartInfo.WorkingDirectory = @"G:\Media\Downloads\";

关于您关于在进程完成时接收通知的问题,您可以使用 WaitForExit 方法或 Process 对象上的 Exited 事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接