You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

任务计划执行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这一圈,步骤如下:

  1. 打开任务计划的「操作」设置,点击「编辑」
  2. 在「程序或脚本」里填入:cmd.exe
  3. 在「添加参数(可选)」里填入:/c ""C:\Path\to\Clue (1985)\random.bat""
  4. 回到操作的「常规」标签,勾选「运行时不显示窗口」

这样配置后,任务计划会调用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

火山引擎 最新活动