首页 > 解决方案 > 批处理脚本 - 如何将标志传递到循环中并在满足条件时修改标志

问题描述

我是脚本新手,我在网上找到了这个脚本,在我稍微调整后似乎可以满足我的需求。我试图在弹出窗口打开后关闭它,一旦弹出窗口打开,我需要一个标志从 false 更改为 true,反之亦然,下次窗口打开时。

似乎我目前定义标志“已连接”的地方是循环的一部分,并且每次迭代都会重新初始化,因此总是正确的。我只需要以某种方式初始化它一次并将其传递到循环中。

@if (@CodeSection == @Batch) @then

@echo off
    set SendKeys=CScript //nologo //E:JScript "%~F0"    
    color 0a

    :loop
        %SendKeys% "{TAB}{TAB} "
        timeout /t 60 /nobreak >nul
    goto :loop

@end
var WshShell = WScript.CreateObject("WScript.Shell"); 
var connected = true;
if (WshShell.AppActivate("Popup window title")) {
    if (connected) {
        WScript.Echo("Inside Connected");
        connected = false;
        WshShell.SendKeys(WScript.Arguments(0));    
    }
    else {
        WScript.Echo("Inside Disconnected");
        connected = true;
        WshShell.SendKeys(WScript.Arguments(0));    
    };
             
}   

我还尝试在“set SendKeys”之后使用 set 命令,例如“set connected=true”,然后我可以在范围内使用这个变量,比如 %connected%,但是当我尝试在 if 中访问它时它没有定义陈述。

任何帮助将非常感激!

标签: batch-fileflagsjscriptwshwscript.shell

解决方案


推荐阅读