首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中执行批处理文件

在C#中执行批处理文件
EN

Stack Overflow用户
提问于 2011-04-02 06:00:32
回答 9查看 412.5K关注 0票数 155

我正试图在C#中执行一个批处理文件,但是我没有得到任何成功。

我在互联网上找到了很多这样做的例子,但它对我来说并不起作用。

public void ExecuteCommand(string command)
{
    int ExitCode;
    ProcessStartInfo ProcessInfo;
    Process Process;

    ProcessInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
    ProcessInfo.CreateNoWindow = true;
    ProcessInfo.UseShellExecute = false;

    Process = Process.Start(ProcessInfo);
    Process.WaitForExit();

    ExitCode = Process.ExitCode;
    Process.Close();

    MessageBox.Show("ExitCode: " + ExitCode.ToString(), "ExecuteCommand");
}

命令字符串包含批处理文件的名称(存储在system32中)以及它应该操作的一些文件。(示例:txtmanipulator file1.txt file2.txt file3.txt)。当我手动执行批处理文件时,它工作正常。

在执行代码时,它会给我一个**ExitCode: 1** (Catch all for general errors)

我做错了什么?

EN

回答 9

Stack Overflow用户

发布于 2012-04-12 20:26:38

System.Diagnostics.Process.Start("c:\\batchfilename.bat");

这行简单的代码将执行批处理文件。

票数 138
EN

Stack Overflow用户

发布于 2011-04-02 08:33:50

在steinar的帮助下,以下是对我有用的:

public void ExecuteCommand(string command)
{
    int ExitCode;
    ProcessStartInfo ProcessInfo;
    Process process;

    ProcessInfo = new ProcessStartInfo(Application.StartupPath + "\\txtmanipulator\\txtmanipulator.bat", command);
    ProcessInfo.CreateNoWindow = true;
    ProcessInfo.UseShellExecute = false;
    ProcessInfo.WorkingDirectory = Application.StartupPath + "\\txtmanipulator";
    // *** Redirect the output ***
    ProcessInfo.RedirectStandardError = true;
    ProcessInfo.RedirectStandardOutput = true;

    process = Process.Start(ProcessInfo);
    process.WaitForExit();

    // *** Read the streams ***
    string output = process.StandardOutput.ReadToEnd();
    string error = process.StandardError.ReadToEnd();

    ExitCode = process.ExitCode;

    MessageBox.Show("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output));
    MessageBox.Show("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error));
    MessageBox.Show("ExitCode: " + ExitCode.ToString(), "ExecuteCommand");
    process.Close();
}
票数 20
EN

Stack Overflow用户

发布于 2011-04-02 06:13:44

它工作得很好。我是这样测试的:

String command = @"C:\Doit.bat";

ProcessInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
// ProcessInfo.CreateNoWindow = true;

我注释掉了关闭窗户,这样我就可以看到它在运行。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5519328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档