以编程方式将击键发送到 Groovy 或 bat 脚本中的窗口程序

2024-01-27

背景故事:我需要以编程方式查找两个文件之间的差异。我想使用 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(使用前将#替换为@)

以编程方式将击键发送到 Groovy 或 bat 脚本中的窗口程序 的相关文章

  • 带有图标相对路径的 Windows 快捷方式

    有没有办法设置Windows快捷方式中图标的相对路径 对于目标位置 它工作正常 windir system32 cmd exe c cd CD start fileToExecute bat 我读到 win 快捷方式可以自动从 exe 文件
  • 如何将 CMD shell 变量展开两次(递归)

    使用 Windows XP CMD 命令行 我可以将变量展开两次 如下所示 set AAA BBB set BBB CCC for F usebackq tokens i in echo AAA do echo i 会回声CCC I e A
  • 批量格式化文件日期YYYYMMDD

    我一直在处理批处理文件中的一些代码 用于评估两个文件日期 如果一个日期大于另一个日期 则会运行另一个 bat 文件 我想要做的是将两个日期格式化为 YYYYMMDD 以便我可以使用GTR 比 更棒 代码如下 但如果我使用它就可以工作 equ
  • 无法以编程方式减小 gtk 窗口的大小

    以编程方式调整 gtk 窗口大小时 我似乎遇到了问题 问题是 一旦我将窗口的宽度和高度增加到 800x600 我似乎无法将其缩小回原来的大小 400x200 下面是示例代码 有人遇到过这样的问题吗 include
  • 批处理 - 解析 Tracert 的输出

    我想寻求有关 Windows 中 Tracert 输出的一些帮助 即我有以下输出 Tracing route to Y Y Y Y over a maximum of 30 hops 1 1 ms 1 ms 1 ms X X X X 2 1
  • 在 Windows 系统上移动文件的最快方法 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想要将大约 800GB 的数据从 NTFS 存储设备移动到 FAT32 设备 两者都是外部硬盘驱动器 在 Windows 系统上 实现这
  • 如何在 Windows PowerShell 中使用 .bat 文件更改当前目录?

    我正在学习 Windows PowerShell 并且正在努力完成非常基本的任务 如何创建 bat 文件来更改当前目录 简单的 bat 文件cd mydir里面用得很好cmd exe 但它在 PowerShell 中不起作用 PS C Us
  • 无法打开目标 = 空白的 Electron webview 链接

    我正在使用 Electron 我有一个显示外部网站的 webview 但我无法成功显示通常由该网站上的链接打开且目标 blank 的附加窗口 a href mentions html target blank Mentions l gale
  • 在 ASP .NET Core 6.0 中获取 Windows 用户名

    我目前正在尝试将 ASP NET Core 5 0 项目迁移到 ASP NET Core 6 0 Window 用户名显示在 NET 5 0 上 但是 对于 NET 6 项目 窗口用户名始终使用匿名用户 我不确定我是否缺少任何代码 欢迎任何
  • 批量倒计时器不清除其余输出?

    我正在尝试创建一个批处理计时器 该计时器不会清除其上方的输出 我创建了一个计时器函数 但我希望对其进行改进 以便我仍然可以查看其上方的输出 而无需在输出中出现倒计时行 我当前的功能是 echo off echo KEEP THIS OUTP
  • Tkinter - 窗口焦点丢失事件

    是否有事件触发tkinter窗口失去可以绑定到的焦点tkinter窗口使用 bind method 您正在寻找的活动是
  • 如何为批量角色扮演游戏创建保存/加载命令?

    我正在制作一个基于文本的批量角色扮演游戏 RPG 最近才开始学习 我的 RPG 没有生命值之类的东西 它更像是故事类型的 RPG 基本上 你选择你想做的选项 然后继续故事 每个选项都可以改变结局 所以 我想知道是否有办法保存 RPG 中的
  • 通过从 .BAT 中查找进程正在使用的端口来终止进程

    在 Windows 中 什么可以查找端口 8080 并尝试通过 BAT 文件终止它正在使用的进程 打开命令提示符并运行以下命令 C Users username gt netstat o n a findstr 0 0 3000 TCP 0
  • screen.availHeight 和 window.height() 之间的区别

    我正在我的浏览器 Firefox 上执行以下 Javascript console debug 屏幕高度 屏幕可用高度 输出770 console debug 窗口高度 窗口 height 输出210 我也在使用 jQuery 两者有什么区
  • 根据文件内容重命名文件批处理文件

    我需要一个批处理文件来读取 XYZ txt 文件中存在的描述名称 并根据描述名称重命名该文件名 例如 我有一个名为 nest txt 的文件名 当我们打开文本文件 nest txt 时 文件名的第二行有说明 Description Man
  • 如何将批处理变量设置为另一个脚本的输出

    我尝试将批处理变量设置为另一个命令的输出 在 Linux Unix 中 您可以简单地使用反引号 例如 在 csh 中 set MY VAR tail etc passwd windows 批处理中有类似的东西吗 实际上我已经发现了一些东西
  • Windows批处理文件:在for循环中设置变量

    我有许多具有相同命名方案的文件 作为示例 四个文件分别称为 num 001 001 txt num 002 001 txt num 002 002 txt num 002 003 txt 第一组数字代表它来自哪个 包 第二组数字只是用来区分
  • 从 IPConfig 获取 IP 地址,稍后在代码中使用,或保存 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 是否可以运
  • Windows批量编程中读取文件名

    我想在Windows批处理编程中读取文件的名称 我尝试使用不同的方法但失败了请帮助 下面给出了场景 我的文件夹中有不同的文件 但所有文件的文件名长度相同 例如 1000342578 30062011 PDF 1000342329 30062
  • 以管理员身份从 cmd 批处理运行 PowerShell 脚本

    我有一个 PowerShell 设置 我想在执行策略可能受到限制并且需要管理员权限的计算机上执行 理想情况下 我可以将其包装在 cmd 批处理中 如下所示 powershell Command Start Process powershel

随机推荐