问问题
8678 次
3 回答
2
这是我在没有测试的情况下拼凑起来的东西,而且我没有 WinMerge,所以测试并不是一个真正的选择。
RunMe.bat
start "" "C:\Path\WinMerge.exe" "file1" "file2"
GenerateDiffFile.vbs
生成差异文件.vbs
Set s = CreateObject("WScript.Shell")
wscript.sleep(1000) ' Sleep for 1 second to allow time for WinMerge to finish loading and merge the files
s.SendKeys("%tr")
wscript.sleep(250) ' Give time for dialog box to appear
s.SendKeys("Diff.html{Enter}")
这完全未经测试,但我认为它非常接近您的需要......您可以看到批处理文件运行 WinMerge,将两个文件传递到命令行上合并。然后它启动 VBS 脚本,该脚本暂停足够长的时间以允许启动的 WinMerge 能够接受键盘输入。我使用Microsoft 的此页面来了解要发送哪些密钥。
多年来,我一直在向程序发送密钥。它工作得非常可靠,只要你要发送密钥的程序保持焦点。
于 2014-01-21T18:12:02.227 回答
2
这是一个激活 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}")'
要将其封装在命令窗口中,请将其保存到文件PowerShellScript.ps1:注意,稍微更改了命令语法,如果您使用 & {.\dot\source\path} 应该可以工作
start /b /wait powershell.exe -nologo -WindowStyle Hidden -sta -Command "& {.\PowerShellScript.ps1}"
于 2014-01-22T03:37:17.640 回答
-1
我所做的就是:echo y | “需要击键的批处理文件”
于 2016-08-02T20:52:01.043 回答