背景故事:我需要以编程方式查找两个文件之间的差异。我想使用 WinMerge 生成一个报告(工具 -> 生成报告),我可以解析该报告以获取两个文件之间的差异。我需要使用 Groovy 脚本或 bat 脚本来完成此操作。
我希望 WinMerge 能够提供命令行选项来生成报告,然后我可以使用Groovy 进程对象 http://groovy.codehaus.org/groovy-jdk/java/lang/Process.html使用参数执行 WinMergeU.exe。据报道,没有这样的运气我为 WinMerge 找到的命令选项 http://manual.winmerge.org/Command_line.html.
接下来,我希望能够启动 WinMerge 并发送击键来逐步浏览菜单以生成报告(Alt+T、R、Diff.html、[Enter])。我没有找到从 Groovy Process 中执行此操作的方法,也没有找到在 bat 脚本中执行此操作的方法。我正在寻找类似于 VB 中的 WshShell.Sendkeys 的东西。这是一场徒劳的追逐吗?
在 bat 文件中使用 PowerShell 更新/回答:我对 Knuckle-Dragger 关于在 bat 文件中使用 PowerShell 脚本的评论很感兴趣。
$folder = "C:\DevTools\WinMerge\WinMergeU.exe"
ii $folder
Start-Sleep -m 1000
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
[Microsoft.VisualBasic.Interaction]::AppActivate("WinMerge")
Start-Sleep -m 100
[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
Start-Sleep -m 100
[System.Windows.Forms.SendKeys]::SendWait("%F")
[System.Windows.Forms.SendKeys]::SendWait("o")
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
[System.Windows.Forms.SendKeys]::SendWait("%T")
[System.Windows.Forms.SendKeys]::SendWait("r")
Start-Sleep -m 1000
[Microsoft.VisualBasic.Interaction]::AppActivate("Save As")
Start-Sleep -m 1000
[System.Windows.Forms.SendKeys]::SendWait("Diff.txt")
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
要将其封装在命令窗口中,请将其保存到文件中PowerShell 脚本.ps1:
start /b /wait powershell.exe -nologo -WindowStyle Hidden -sta *PowerShellScript.ps1*
这是一个激活 winmerge 并发送一些密钥的 powershell 示例。
编辑:使用一些 .NET 变量减少复制面食。 $SK = 发送密钥 $AA = AppActivate $LRA = 反映 .NET。
$startapp = "C:\DevTools\WinMerge\WinMergeU.exe"
ii $startapp
$SK = "[System.Windows.Forms.SendKeys]::SendWait"
$AA = "[Microsoft.VisualBasic.Interaction]::AppActivate"
$LRA = "[void][System.Reflection.Assembly]::LoadWithPartialName"
Start-Sleep 1
$LRA+'("Microsoft.VisualBasic")'
$AA+'("WinMerge")'
Start-Sleep -m 100
$LRA+'("System.Windows.Forms")'
Start-Sleep -m 100
$SK+'("%F")'
$SK+'("o")'
$SK+'("{ENTER}")'
$SK+'("%T")'
$SK+'("r")'
Start-Sleep 1
$AA+'("Save As")'
Start-Sleep 1
$SK+'("Diff.txt")'
$SK+'("{ENTER}")'
要将其封装在命令窗口中,请将其保存到文件中PowerShell 脚本.ps1:注意,稍微更改了命令语法,如果使用 & {.\dot\source\path} 应该可以工作
start /b /wait powershell.exe -nologo -WindowStyle Hidden -sta -Command "& {.\PowerShellScript.ps1}"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)