【问题标题】:Batch file in pause continue execution after firefox finish the work and will close批处理文件在firefox完成工作后继续执行并将关闭
【发布时间】:2019-01-28 03:40:35
【问题描述】:

我有一个检查互联网连接的批处理文件,如果互联网连接正常,请使用宏启动 Firefox 并继续暂停。

在此期间fiefox与宏一起工作,firefox完成工作后自动关闭。

现在我需要继续firefox完成工作后打开的批处理代码,并将关闭但批处理文件暂停。

是否存在无需人工干预即可继续打开批处理文件的解决方案?

使用 firefox,我可以运行另一个批处理文件或软件(使用一些 javascript),但我需要继续执行打开的批处理文件,我找不到任何解决方案来继续批处理文件。

这是我的批处理文件的代码(ping 检查连接,声音提醒我,用宏启动 Firefox,暂停批处理文件)

PING -n 5 www.wikipedia.org|FIND /I "TTL">NUL
IF NOT ERRORLEVEL 1 rundll32 user32.dll,MessageBeep 0x00000010L
IF NOT ERRORLEVEL 1 start "" "D:\Programmi Installati\Firefox\FirefoxPortable.exe" imacros://run/?m=work.iim
IF NOT ERRORLEVEL 1 PAUSE

我不知道firefox需要多长时间才能完成这项工作,所以我使用了暂停命令。

【问题讨论】:

  • start "" "D:\...\FirefoxPortable.exe" ... --> start "" /WAIT "D:\...\FirefoxPortable.exe" ...?

标签: batch-file continue pause


【解决方案1】:

Batch 在您的使用中非常有限。但是,您有两种选择。

首先,您可以使用timeout 让批处理脚本在继续之前等待 x 时间。这样做的问题是,正如您所说,您不知道宏过程可能需要多长时间。

PING -n 5 www.wikipedia.org|FIND /I "TTL">NUL
IF NOT "%ERRORLEVEL%"=="1" (
    rundll32 user32.dll,MessageBeep 0x00000010L
    start "" "D:\Programmi Installati\Firefox\FirefoxPortable.exe" imacros://run/?m=work.iim
    TIMEOUT /T 60 /NOBREAK
)

第二个选项是(如果可能的话)在完成后让 imacros 关闭浏览器的所有实例。您可以让批处理脚本在继续之前寻找要终止的进程。请记住TIMEOUT /T 5 /NOBREAK >NUL 的原因是允许浏览器实际打开几秒钟。请将myapp.exe 的两个实例更改为您的Firefox 进程名称。

PING -n 5 www.wikipedia.org|FIND /I "TTL">NUL
IF NOT "%ERRORLEVEL%"=="1" (
    rundll32 user32.dll,MessageBeep 0x00000010L
    start "" "D:\Programmi Installati\Firefox\FirefoxPortable.exe" imacros://run/?m=work.iim
    TIMEOUT /T 5 /NOBREAK >NUL
    goto Search
)

:Search
tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /N "myapp.exe">NUL
if "%ERRORLEVEL%"=="0" (
    TIMEOUT /T 5 /NOBREAK >NUL
    goto Search
)
if "%ERRORLEVEL%"=="1" (goto Continue)

:Continue
Echo Macro has finished! Continue code here.

【讨论】:

  • 我认为的另一个解决方案是,暂停前的批处理文件可以将暂停后的部分代码复制到另一个具有不同名称的批处理文件中,在firefox完成工作后关闭之前,强制taskkill关闭批处理文件暂停并在此模式下暂停后使用其余代码启动新的批处理文件我将批处理代码拆分为各种批处理文件,每个部分都将在 Firefox 完成工作后加载。 @John Kens 我尝试您的第二个解决方案并告知是否对我有用。感谢大家提出任何建议,以找到解决我问题的简单方法,谢谢
  • 感谢解决方案 1 没用,因为我不知道 firefox 的工作时间,解决方案 2 工作但给我带来了 100% cpu 有可能减少工作量可能会减慢它,也许是循环使 cpu 达到 100%。谢谢你的帮助
  • @placidomaio 是的,我将编辑我的回复。我们可以在返回循环之前添加 5 秒的延迟。
  • 回复已编辑。如果您想要更少或更多延迟,请将errorlevel 代码块中的5 更改为您想要的x 秒。
  • 感谢您的解决方案就像一个魅力,再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多