【问题标题】:Call an .EXE-Tool with ">" - command inside/as a parameter使用“>”调用 .EXE-Tool - 命令内部/作为参数
【发布时间】:2019-03-23 17:21:55
【问题描述】:

我想用 PowerShell 脚本调用一个 EXE 工具(基于 Perl)。

基本上以下命令在 CMD 中调用该工具。该工具处理一些文件并创建一个输出文件:

tool.exe [OPTIONS] > out.txt

该工具还在创建此输出文件后打印一些“结果”。 现在,如何将这个命令放在 PowerShell 环境中?

我尝试了不同的解决方案,但 PowerShell 本身总是使用“> out.txt”。该工具没有得到此命令,将无法正确创建文件:

& tool.exe '> out.txt'

或用“”:

& tool.exe "> out.txt"

我能做什么?

编辑:

tool.exe:扫描了 1 个目录 在 ..\Tool_new.ps1:150 Zeichen:1 + & 工具.exe > out.kml + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:未指定:(扫描的 1 个目录:String)[],RemoteException + FullyQualifiedErrorId : NativeCommandError 22 个文件失败条件 读取 34 个图像文件

“1个目录扫描”+“22个文件失败条件”+“34个图像文件读取”是打印的结果。

【问题讨论】:

  • 删除你的引号。
  • 谢谢!但是会有下一个问题:该工具在创建文件后会产生一些结果输出。现在 Powershell 将这些行解释为命令 --> 错误 - 你有什么想法吗?
  • 没有看到您的可执行文件在做什么,很难说出正在发生的事情。 powershell 中可执行文件的所有输出都以字符串数组的形式输出。
  • EXE 写了一些注释,比如:“10 个文件已处理,10 个文件被跳过”
  • 产生了什么错误?请将它们添加到您的问题中。

标签: powershell cmd command exe


【解决方案1】:

你能用吗:

& tool.exe | Out-File -Path '.\out.txt' -Encoding ascii

【讨论】:

  • 在 cmets 中发现它是 ISE 的问题。
【解决方案2】:

在 powershell 或 ISE 中按预期运行可执行文件的选项是让 cmd.exe 处理它。这确实会增加一点点开销,并且随着技术的进步,cmd 将被逐步淘汰。但对于我们所处的过渡期,这是一个不错的选择。

你的程序的一个例子是......

cmd.exe /c "tool.exe > out.txt" 

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 2020-01-13
    • 2014-05-29
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多