Batch file VBscript HTTP状态msgbox仅在出现问题时弹出

Batch file VBscript HTTP状态msgbox仅在出现问题时弹出,batch-file,vbscript,hta,httpapplication,Batch File,Vbscript,Hta,Httpapplication,这是我正在制作的MS-HTA中的VBscript代码,它应该在每次运行时检查Web服务器的更新 但它不起作用,如果用户点击ok而不点击,它会弹出一次 下载新版本,即使它们保留在旧版本上,也不会再次提示 如果版本仍然过时,我可以让它在每次运行时都提示吗? 需要是能够在HTMLApplication MS-HTA中工作的VBScript Dim varHTTP, varBinaryString, varFileName, varLink set objShell = CreateObject("W

这是我正在制作的MS-HTA中的VBscript代码,它应该在每次运行时检查Web服务器的更新

但它不起作用,如果用户点击ok而不点击,它会弹出一次 下载新版本,即使它们保留在旧版本上,也不会再次提示

如果版本仍然过时,我可以让它在每次运行时都提示吗? 需要是能够在HTMLApplication MS-HTA中工作的VBScript

Dim varHTTP, varBinaryString, varFileName, varLink

set objShell = CreateObject("WScript.Shell")

Set varHTTP = CreateObject("Microsoft.XMLHTTP")
Set varBinaryString = CreateObject("Adodb.Stream")

varFileName = "YoutubeDLV2.zip"
varNewFileName = "YoutubeDLV3.zip"
varLink = "https://MyURL.com/YTDL/V2/" & varFileName
varNewLink = "https://MyURL.com/YTDL/V3/" & varNewFileName
varHTTP.Open "GET", varLink, False
varHTTP.Send

CheckFile()

Sub CheckFile()
Select Case Cint(varHTTP.status)
    Case 200, 202, 302 
        'it exists
        Exit Sub
    Case Else
        'does not exist         
        msgbox "Update Found! Go to:" & vbNewLine & 
"https://MyURL.com/YTDL/" & vbNewLine & "And download latest version." & 
vbNewLine & vbNewLine & "Currently Running Version." & vbNewLine + varLink & 
vbNewLine & vbNewLine & "Newest Version:" & vbNewLine + varNewLink
End Select
End Sub
这条线似乎引起了问题

Case 200, 202, 302 
案例202-每次由其自身引发提示

200 – OK (standard successful http request)
202 – Accepted (request accepted for processing, but not completed)
302 – Found (via redirection)
案例200、202、302-即使拒绝,也只会导致一次

案例200-自己什么也不做

200 – OK (standard successful http request)
202 – Accepted (request accepted for processing, but not completed)
302 – Found (via redirection)
正如我上面所说的,这段代码确实有效,但只有一次。我希望它每次都能工作,我不知道为什么我不能让它工作,有什么想法吗

---编辑


我只是使用了批处理,因为我更了解它,并使它工作。它确实依赖于powershell的版本5,因此无法在windows 7中工作,而且第三方wget standalone exe也可以工作:)


我只是使用了批处理,因为我更了解它,并使它工作。它确实依赖于powershell的版本5,因此无法在windows 7中工作,而且第三方wget standalone exe也可以工作:)


为什么不将其设置为案例404并交换逻辑?404似乎不起作用,没有任何提示,猜测,因为我的站点提供了一个404错误页面,其中的文件路径与重定向到site.com/404/的路径不同,在任何文件上它都算不上仍然有效。当显示404代替mysite.com/YoutubeDLV2时。zip@NathanRice这一逻辑是可靠的,但似乎对我不起作用(你能更新更详细的信息吗?为什么不起作用?
varHTTP.status
会在你每次发出请求时更新,对吗?那么如果你只调用
CheckFile()
(并且
varHTTP.Send
不在这个方法中),它将如何更新?)?
Sub  Window_onload

Const NORMAL_WINDOW = 1
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "VersionCheck.bat", "", , , NORMAL_WINDOW

End Sub
:main
cls
set version=2.0
set filename=YoutubeDLV3.zip
wget.exe --no-check-certificate https://mysite/YTDL/version.txt >nul
set /p nwstvrsn=<version.txt
set nwstvrsn=%nwstvrsn: =%
if %version% lss %nwstvrsn% goto newupdateavailable
if %version%==%nwstvrsn% goto noupdateavailable
goto main


:newupdateavailable
cls
echo.
echo Downloading Update...
echo.
wget.exe --no-check-certificate https://mysite/YTDL/V2/%filename% -O "%filename%"
ping localhost -n 2 >nul
PowerShell.exe Expand-Archive %filename% -DestinationPath %userprofile%\Downloads\
pause
exit

:noupdateavailable
cls
echo.
echo No Update Available
echo.
pause
exit
Sub  Window_onload

Const NORMAL_WINDOW = 1
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "VersionCheck.bat", "", , , NORMAL_WINDOW

End Sub