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

问题描述 投票:0回答:1

我有一个我想从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#运行,所以有一些不正确的关于如何将参数输入蝙蝠文件......

有什么想法吗?

c# batch-file
1个回答
1
投票

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

processInfo = new ProcessStartInfo("cmd.exe");
processInfo.Arguments = String.Format("/C {0} {1}", command, "123456");
processInfo.WorkingDirectory = yourWorkingDirectory;
© www.soinside.com 2019 - 2024. All rights reserved.