第二个超时功能在批处理文件中不起作用

时间:2019-12-11 18:51:36

标签: windows batch-file cmd winamp

处理游戏的启动文件(如具有特殊功能的快捷方式)。 (反恐精英全球攻势)

目的是替换菜单音乐-之前进行了一些更新,这比较容易,但现在我需要在批处理文件上进行锻造。

这是到目前为止的样子

@Echo off
"C:\Users\Cedo\Desktop\csgo\csgo\Counter-Strike Global Offensive.url"
Timeout 9
"C:\Users\Cedo\Desktop\csgo\csgo\csgomusic.m3u8"
[Timeout 240]!
[Taskkill /IM winamp.exe]! ----> Dont work! 
Exit

到这里的方法比我想的还要复杂。我已经解决了很多问题,因为我想互联网上的许多内容似乎已经过时了。

实际的问题是winamp音乐文件的第二次超时和taskkill。 奇怪的是,当插入第二个超时(如第一个超时)时,什么也没有发生。 手动关闭winamp之后,计时器就会启动!

但是需要做一些事情,以使第二个超时(240秒)和关闭winamp的taskkill自动起作用。

另一个很酷的事情是稍后启动winamp音乐文件,而不会最小化启动的游戏窗口。 (已经尝试过的start / min命令-实际无关紧要-如果最小化或最大化将无法正常工作) 有人知道更多吗?现在我9秒就很好了(winamp在游戏最大化之前就打开了,因为这需要一些时间,所以我没有被淘汰)。

还有可能有更好的方法来建立或改进它吗?

1 个答案:

答案 0 :(得分:0)

  

仅在手动关闭winamp之后,计时器就会启动!

鉴于此陈述,我推断"C:\Users\Cedo\Desktop\csgo\csgo\csgomusic.m3u8"正在启动Winamp。

请注意将以下脚本放入“ C:\ Users \ Cedo \ Desktop \ csgo \ csgo \”文件夹中,或更新“ _RootFolder”以获取正确的路径。

因此,基本上,您需要做的是:

启动一个单独的命令窗口以运行杀死winamp的任务,因为否则,只有在手动杀死Winamp时,您才继续执行下一个命令。

@(SETLOCAL 
  REM SET "KillCmd="%~f0" :Kill_Winamp"
  REM SET "_StartKillCMD=start "Kill Winamp!" cmd /c %KillCmd%"
  SET "_StartKillCMD=start "Kill Winamp!" cmd /c "%~f0" :Kill_Winamp"
  SETLOCAL EnableDelayedExpansion
  ECHO OFF
  SET "eLvl=0"
  REM SET "_RootFolder=%USERPROFILE%\Desktop\csgo\csgo\"
  SET "_RootFolder=%~dp0"
  SET "CSGo_URL=!_RootFolder!Counter-Strike Global Offensive.url"
  SET "Music_File=!_RootFolder!csgomusic.m3u8"

  SET /A "_Timer_WinAmp_Start=9",   "_Timer_WinAmp_Kill= _Timer_WinAmp_Start + 240"

)

ECHO=%* | FIND /I ":Kill_Winamp" && (
  CALL :Kill_Winamp
) || (
  CALL :Main
)

( ENDLOCAL
  Exit /b %_eLvl%
}

:Main
  COLOR 2F
  ECHO=======================================================================
  ECHO=  Launching CSGO, Waiting %_Timer_WinAmp_Start% seconds before starting Winamp.
  ECHO=======================================================================
  ECHO=
  "%CSGo_URL%"
  ECHO=
  SETLOCAL DisableDelayedExpansion
   %_StartKillCMD%
  ECHO=
  ECHO=Started Kill Timer..
  ECHO=
  Timeout %_Timer_WinAmp_Start%
  "%Music_File%"
  ECHO=Exiting, Remove the pause on the next line if not needed.
  Pause
GOTO :EOF

:Kill_Winamp
  COLOR 4F
  ECHO=======================================================================
  ECHO=  Waiting %_Timer_WinAmp_Kill% Seconds before Killing Winamp.
  ECHO=======================================================================
  ECHO=
  ECHO=
  Timeout %_Timer_WinAmp_Kill%
  Taskkill /IM winamp.exe
  ECHO=Exiting, Remove the pause on the next line if not needed.
  Pause
GOTO :EOF