将参数传递到批处理文件中,来自c#

时间:2018-02-28 19:35:49

标签: c# batch-file

我有一个我想从C#窗体运行的批处理文件。批处理文件非常基础,并接受一个参数

cd C:\Program Files (x86)\Advent\ApxClient
AdvScriptRunner REPRUN -mrgainloss -p%1 -vf -t\\myserver\apx$\pdf\myReport

如果我在命令提示符下调用它,这可以正常工作

C:\ Program Files(x86)\ Locations \ blah> realizegainloss 123456

运行得很好,我得到预期的结果(它输出一个报告运行在第三方软件上)。但是我不能为我的生活用c#来解决这个问题。我有以下内容。

private void button1_Click(object sender, EventArgs e)
    {
        ExecuteCommand(getCommand());

    }

    public string getCommand()
    {
        return "realizedgainloss.bat";
    }

    static void ExecuteCommand(string command)
    {
        int exitCode;
        ProcessStartInfo processInfo;
        Process process;

        processInfo = new ProcessStartInfo(command);
        //processInfo.CreateNoWindow = true;
        processInfo.UseShellExecute = false;
        // *** Redirect the output ***
        processInfo.RedirectStandardError = true;
        processInfo.RedirectStandardOutput = true;
        processInfo.Arguments = String.Format("{0} {1}", command, "123456");
        process = Process.Start(processInfo);
        process.WaitForExit();

        // *** Read the streams ***
        // Warning: This approach can lead to deadlocks, see Edit #2
        string output = process.StandardOutput.ReadToEnd();
        string error = process.StandardError.ReadToEnd();

        exitCode = process.ExitCode;

        Console.WriteLine("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output));
        Console.WriteLine("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error));
        Console.WriteLine("ExitCode: " + exitCode.ToString(), "ExecuteCommand");
        process.Close();
    }

值得注意的是,如果我不提供参数,并将bat文件更改为静态,用12345代替它的%1,则它从C#运行,所以有一些不正确的关于如何我将参数放入bat文件......

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您有批处理文件名作为要运行的命令和脚本的第一个参数。我发现使用cmd.exe作为运行命令并使用/ C参数调用它更容易,更可靠。这样做你应该确保你的工作目录也正确设置。

processInfo = new ProcessStartInfo("cmd.exe");
processInfo.Arguments = String.Format("/C {0} {1}", command, "123456");
processInfo.WorkingDirectory = yourWorkingDirectory;
相关问题