我需要从Powershell脚本中调用.bat文件

时间:2015-07-05 07:34:04

标签: powershell

我们正在将perl脚本迁移到powershell脚本。 在Perl中,代码如下所示

$rc='D:\\EmailConnector\\run.bat> $EmailConnector_log;';

我尝试如下所示,但没有工作

StartProcess "cmd.exe" "/c D:\EmailConnector\run.bat> $EmailConnector_log"

当我尝试如下所示运行.bat脚本时,但我想更新日志文件。你能帮帮我吗?

StartProcess run.bat -workingdirectory "D:\EmailConnector"

.bat文件包含用于电子邮件功能的jar文件。但是我们想要登录日志文件。

3 个答案:

答案 0 :(得分:2)

使用call operator&),如下所示:

& 'D:\EmailConnector\run.bat' > $EmailConnector_log

批处理脚本的返回值会自动放入变量$LastExitCode

答案 1 :(得分:0)

这是你的意思吗?

    String contents = 
        "3\n" + 
        "1 2 3 4 5 6\n" +
        "1 2 3 4 5\n" +
        "1 2 3 4\n";

    int[][] result = null;

    try (BufferedReader reader = new BufferedReader(new StringReader(contents))) {
        int i = 0;
        int count = 0;
        String line;
        while ((line = reader.readLine()) != null)
            if (result == null)
                result = new int[count = Integer.parseInt(line)][];
            else if (i < count)
                result[i++] = Stream.of(line.split(" "))
                    .mapToInt(s -> Integer.parseInt(s))
                    .toArray();
            else
                break;
    }
    for (int[] line : result)
        System.out.println(Arrays.toString(line));
    // result:
    // [1, 2, 3, 4, 5, 6]
    // [1, 2, 3, 4, 5]
    // [1, 2, 3, 4]
如果你需要另一个logfile参数

,那么

或者这个

Start-Process "cmd" -ArgumentList '/c','D:\EmailConnector\run.bat' -WorkingDirectory "D:\EmailConnector"

答案 2 :(得分:0)

或者,由于路径中没有空格,您可以直接从PowerShell执行批处理文件:

D:\EmailConnector\run.bat > $EmailConnector_log

这是PowerShell既是“shell”又是“脚本语言”的优势之一。批处理,cmd,vbs,exe文件的执行很简单 - 通常。参数传递可能是一个问题,但现在可以使用停止解析运算符轻松解决:--%