我有以下批处理文件
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等,但是如果没有批处理文件开头的上一行,它就无法工作。
这种奇怪行为的原因是什么?为什么我需要在第一行执行变量赋值才能运行任何脚本?或者我错过了一些非常明显的东西。
由于