诚心求助!本人最近在写远程批量关闭应用的脚本,由于该应用不可强杀,需要触发其关闭后输入密码,故调用了sendkeys去输入密码;然而用命令行触发应用关闭后,由于焦点的偏移,sendkeys无法将密码正确传输到应用中。后来我又使用了appactivate,在输入密码前将焦点转移到应用内,至此在本机上测试成功。然而当我尝试在别的机器上远程start该bat脚本时,发现跟在本机使用脚本不一样,焦点无法转移到应用内。
以下是我部署在远程机器上的,用来关闭该应用的bat脚本:- @if (@CodeSection == @Batch) @then
- ::@echo off
- if "%1"=="h" goto begin
-
- :begin
- SET SendKeys=CScript //nologo //E:JScript "%~F0"
- set /a n=0
-
- for /f "delims=" %%a in ('tasklist^|findstr /i "应用名"') do set /a n+=1
- if %n% gtr 0 goto kill_menu
- if %n% equ 0 goto end
-
-
-
- :kill_menu
-
- for /f "tokens=2" %%i in ('tasklist ^| findstr 应用名') do echo %%i > pid.txt
-
-
- for /f %%a in (pid.txt) do (
-
- if "%%~za" equ "0" (
-
- GOTO end ) else (
-
- taskkill /pid %%a
- )
-
- )
-
- echo CreateObject("WScript.Shell").Appactivate("应用名") > tmp.vbs
- start tmp.vbs
-
- ping 127.0.0.1 > nul
- %SendKeys% "password"
- %SendKeys% "{ENTER}"
- del tmp.vbs
- del pid.txt
- GOTO begin
-
-
-
- @end
- // JScript section
- var WshShell = WScript.CreateObject("WScript.Shell");
- WshShell.SendKeys(WScript.Arguments(0));0
复制代码 最后我是在别的机器上用plink去远程调用上面脚本的:
start "" plink -ssh -pw xxx xxx@192.168.1.13 ".\close.bat" |