除非第一行是变量赋值

时间:2016-08-09 10:27:53

标签: windows batch-file wsh

我有以下批处理文件

REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\{2e085fd2-a3e4-4b39-8e10-6b8d35f55244} > nul
if %ERRORLEVEL% EQU 1 (

     start /wait "" "%~dp0vc_redist.x86.exe"
)

if exist "%~dp0files\data\GAME_EXE.exe" (

    start "" "%~dp0files\data\GAME_EXE.exe"

) else (

    SET scriptDir=%tmp%\tempGameDialog.vbs

    @echo Call msgbox("It looks like your virus scanner deleted the game exe file. Please deactivate it, restore the game exe file, then try again.", vbCritical, "Error with game"^) > %scriptDir%

    @cscript /nologo %scriptDir%
    @del %scriptDir%
)

当我通过命令提示符运行此文件时,它没有问题,我在else语句中看到对话框窗口,正如我所期望的那样。每当我通过Windows资源管理器运行批处理文件时,命令提示符立即关闭,而不会看到任何提示。

如果我将以下行添加到批处理文件的第一行,然后运行Windows资源管理器,那么所有工作都按预期工作

@SET scriptDir=%tmp%\tempGameDialog.vbs

我尝试使用start命令来运行cscript等,但是如果没有批处理文件开头的上一行,它就无法工作。

这种奇怪行为的原因是什么?为什么我需要在第一行执行变量赋值才能运行任何脚本?或者我错过了一些非常明显的东西。

由于

0 个答案:

没有答案