任务计划执行VBS调用BAT显示成功但BAT未运行的问题求助
任务计划运行VBS调用BAT无执行?来试试这些解决办法
我明白你的困扰——明明手动运行BAT完全正常,任务计划也显示操作成功,但就是没看到BAT执行的效果。结合你提供的信息,我帮你梳理几个可能的问题点和对应的解决方案:
问题核心大概率是「工作目录」或「路径转义」
任务计划默认的工作目录并不是你BAT文件所在的文件夹,加上VBS脚本里的路径处理可能有小问题,导致BAT实际上没在正确的环境里运行。
方案1:修改VBS脚本,先切换到BAT所在目录
这是最稳妥的办法,确保BAT在自己的目录下执行,生成的.strm文件也会出现在正确位置。把你的VBS改成这样:
Set WshShell = CreateObject("WScript.Shell") ' 先切换到BAT文件所在的目录 WshShell.CurrentDirectory = "C:\Path\to\Clue (1985)" ' 直接运行BAT,0表示隐藏控制台窗口 WshShell.Run "random.bat", 0 Set WshShell = Nothing
这样就不用纠结带空格和括号的路径转义问题,而且BAT的工作环境和你手动双击时完全一致。
方案2:直接在任务计划里隐藏运行BAT(省去VBS)
其实任务计划本身就支持隐藏窗口运行BAT,没必要绕VBS这一圈,步骤如下:
- 打开任务计划的「操作」设置,点击「编辑」
- 在「程序或脚本」里填入:
cmd.exe - 在「添加参数(可选)」里填入:
/c ""C:\Path\to\Clue (1985)\random.bat"" - 回到操作的「常规」标签,勾选「运行时不显示窗口」
这样配置后,任务计划会调用cmd执行你的BAT,执行完自动退出,全程没有控制台窗口弹出,比VBS更直接。
额外提个小细节:你的BAT里可能有个笔误
你写的BAT里有一行:
echo Clue (1985) - Ending %=ExitCodeAscii%.mkv > "Clue (1985) - Random Ending.strm"
这里的%=ExitCodeAscii%是无效的变量名,如果你是想把之前生成的ASCII码(65=A、66=B、67=C)转成对应的字母,正确的写法可以用PowerShell来实现,修改后的BAT如下:
@echo off set /a ascii=(%RANDOM% %% 3) + 65 cmd /c exit /b %ascii% ' 把错误级别转成对应的ASCII字符 for /f "delims=" %%a in ('powershell -command [char]%errorlevel%') do set "ending_char=%%a" echo Clue (1985) - Ending %ending_char%.mkv > "Clue (1985) - Random Ending.strm"
如果手动运行时没问题,可能你实际的BAT里是正确的写法,但写出来时打错了,这个小细节可以留意下,避免生成的.strm文件内容不符合预期。
最后再检查下任务计划的设置
确保任务的「安全选项」里:
- 勾选了「使用最高权限运行」
- 选择的用户是你当前的账号(你是唯一用户的话没问题)
- 触发器设置(每5分钟、开机启动)都正常启用
内容的提问来源于stack exchange,提问作者koberulz




