批处理文件中代码是否互相冲突?音量调节与视频播放问题咨询
问题根源与解决方法
你这个混合脚本失效的核心原因是:那些切换目录和播放视频的批处理命令,被当成了JScript代码的一部分,根本没被批处理执行。
混合脚本的执行逻辑是:先运行批处理部分的代码,然后调用cscript执行自身的JScript部分,但你原来把cd和call写在了JScript注释的后面,这部分会被JScript引擎解析,而JScript不认识批处理命令,自然就没效果。
直接修改脚本结构就能解决,把批处理命令移到调用JScript之后的批处理区域:
if (@a==@b) @end /* :: batch portion @ECHO OFF :: 先执行调音量的JScript代码 cscript /e:jscript "%~f0" :: 这里执行批处理的路径切换和播放命令 cd "mario\assets" call "mario.mp4" :: JScript portion */ var shl = new ActiveXObject("WScript.Shell"); for (var i=0; i<5; i++) { shl.SendKeys(String.fromCharCode(0xAF)); }
如果不想切换目录,还可以用绝对路径直接调用视频,避免路径切换带来的潜在问题(比如脚本运行目录变化):
if (@a==@b) @end /* :: batch portion @ECHO OFF cscript /e:jscript "%~f0" :: %~dp0 代表当前脚本所在的绝对路径,直接拼接视频路径 call "%~dp0mario\assets\mario.mp4" :: JScript portion */ var shl = new ActiveXObject("WScript.Shell"); for (var i=0; i<5; i++) { shl.SendKeys(String.fromCharCode(0xAF)); }
这样修改后,单个脚本就能正常执行调音量+播放视频的操作,不用拆分也不用额外的批处理文件。
内容的提问来源于stack exchange,提问作者zodiac
相关产品推荐
相关产品推荐

