gpt4 book ai didi

powershell - 如何从 Powershell 运行这个 Beyond Compare 脚本?

转载 作者:行者123 更新时间:2023-12-02 22:33:27 26 4
gpt4 key购买 nike

目前我可以使用 Beyond Compare 脚本将结果输出到文件。你们都能够帮助我弄清楚如何通过 Powershell 检查结果文本文件中的差异。不过,我还有一个问题。要将结果存入文本文件,Beyond Compare 让您使用一个基本脚本,然后通过 cmd 运行该脚本。我的问题是如何通过 Powershell 而不是 cmd 运行脚本?下面是在 cmd 中用于运行脚本的命令。

c:\Program Files\Beyond Compare 4>bcompare.exe @"C:\script.txt" "C:\test1" "C:\test" "C:\bcreport\report.txt"

它引用的脚本如下。
load "%1" "%2"
expand all
folder-report layout:side-by-side options:display-mismatches output-to:"%3"

感谢您提供任何意见。让它工作是我正在处理的更大的 Powershell 脚本的一部分。如果我可以让它从 Powershell 运行,它将为我节省大量时间,因为我将能够编写需要数小时的脚本。

最佳答案

cmd 不同,未加引号的 @ 是 PowerShell 中的元字符;也就是说,它有特殊的意义[1]。
要逐字使用 @ ,为了在这种情况下将其传递给 bcompare.exe,请使用 ` 对其进行转义,这是 PowerShell 的转义字符;即 使用 `@ :

bcompare.exe `@"C:\script.txt" "C:\test1" "C:\test" "C:\bcreport\report.txt"
或者 ,在引用的字符串中包含 @:
bcompare.exe "@C:\script.txt" "C:\test1" "C:\test" "C:\bcreport\report.txt"
另一种选择是在参数之前放置 --% ,即所谓的停止解析符号,如 Wasif Hasan's answer 所示;这样做可以防止 PowerShell 在传递参数之前解释它们。
但是,请注意,虽然如果您的所有参数都是文字,这会按预期工作,就像您的情况一样, 通常会阻止您将 PowerShell 变量和表达式用作/在参数 中,并且可能会产生其他 意外副作用this answer

[1]
  • @ 在 PowerShell 中有多种语法用途; " 跟在 @ 之后,PowerShell 认为参数是 here-string ;由于此处字符串需要多行定义,因此命令会因语法错误而中断。变量名前的 @(例如 @foo )执行 splatting
  • This answercmd 的元字符与 PowerShell 的元字符进行对比。
  • This answer 全面概述了 PowerShell 如何解析不带引号的命令参数。
  • 关于powershell - 如何从 Powershell 运行这个 Beyond Compare 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60851830/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com