使用PowerShell从命令行滚动Toad查询输出至底部的问题
解决Toad启动后自动滚动到查询输出底部的问题
你的问题核心有两个:
- 错误地将PowerShell的SendKeys命令当作Toad的启动参数传递,Toad无法识别该参数,因此滚动操作不会执行。
- 就算命令写法正确,也未给Toad预留足够的启动、查询执行及输出加载时间,按键发送时机过早,窗口未就绪。
以下是修正后的脚本:
# 启动Toad并执行指定SQL脚本 $toadProcess = Start-Process Toad -ArgumentList "-min","-c","admin/xxxx@yyyyy","-f","C:\Users\Documents\test.sql","/EXEC" -PassThru # 等待Toad完成加载与查询执行(可根据实际情况调整秒数) Start-Sleep -Seconds 10 # 发送Ctrl+End按键滚动到输出底部 Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.SendKeys]::SendWait('^{END}')
关键调整说明:
- 使用
-PassThru参数获取Toad进程对象,便于后续确认进程状态(可选操作)。 - 添加
Start-Sleep指令,给Toad足够时间完成启动、数据库连接、查询执行和输出加载,时间可根据数据库规模、脚本复杂度灵活调整。 - 单独执行SendKeys命令,而非将其作为Toad启动参数,确保按键发送至已就绪的Toad窗口。
若直接发送按键无效果,可尝试先激活Toad窗口:
# 获取Toad主窗口句柄并激活 $toadWindow = Get-Process -Id $toadProcess.Id | Select-Object -ExpandProperty MainWindowHandle [System.Windows.Forms.SendKeys]::SendWait('%') # 先按Alt确保窗口激活 [System.Windows.Forms.SendKeys]::SendWait('^{END}')
内容的提问来源于stack exchange,提问作者Fedric Kelley
相关产品推荐
相关产品推荐

