如何在不修改批处理文件的情况下自动填充SQLPlus凭据
解决方案
要实现先完成Update.bat的凭据填充并执行完毕,再自动处理Delete.bat,需要解决两个核心问题:确保脚本等待Update.bat执行完成后再启动Delete.bat,以及给新启动的批处理窗口留出足够加载时间避免按键发送失效。
修改后的混合脚本如下:
@if (@CodeSection == @Batch) @then @echo off set "username=test" set "password=1234" :: 处理Update.bat start /wait "" "Update.bat" :: 等待窗口加载,可根据实际情况调整延迟时间(单位:秒) timeout /t 1 /nobreak >nul CScript //nologo //E:JScript "%~F0" "%username%{tab}%password%{enter}" :: 处理Delete.bat start /wait "" "Delete.bat" timeout /t 1 /nobreak >nul CScript //nologo //E:JScript "%~F0" "%username%{tab}%password%{enter}" goto :EOF @end WScript.CreateObject("WScript.Shell").SendKeys(WScript.Arguments(0));
关键修改说明
- 使用
start /wait启动批处理文件:该参数会让脚本等待启动的批处理窗口完全关闭(即执行完毕)后,再继续执行后续代码 - 添加
timeout /t 1 /nobreak >nul:给新启动的批处理窗口留出1秒加载时间,避免SendKeys在窗口准备好之前发送按键导致无效 - 重复启动+等待+发送按键的逻辑,分别完成
Update.bat和Delete.bat的自动处理
注意事项
- 如果系统加载速度较慢,可以调整
timeout的时间(比如改成timeout /t 2表示等待2秒) - SendKeys的按键序列中,
{tab}用于切换到密码输入框,{enter}用于确认输入,确保和原批处理的输入顺序匹配
内容的提问来源于stack exchange,提问作者John Davis
相关产品推荐
相关产品推荐

