我们正在将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文件。但是我们想要登录日志文件。
答案 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文件的执行很简单 - 通常。参数传递可能是一个问题,但现在可以使用停止解析运算符轻松解决:--%
。