批处理脚本无法启动指定数量的Spek实例问题求助
批处理脚本无法启动指定数量的Spek实例问题求助
嘿,我来帮你排查这个问题~先理清楚你当前脚本的问题所在,再给你针对性的解决方案:
首先,你的原脚本会遍历目标文件夹里所有的.mp3文件,每找到一个就启动一个Spek窗口——所以如果文件夹里不止2首歌,它自然会打开一堆窗口,而不是你想要的2个。另外还有个隐藏的小坑:你的spek路径包含空格(C:\Program Files (x86)\Spek\spek.exe),但你没有给它加双引号,批处理会把空格当成参数分隔符,可能导致Spek根本启动失败,这也可能是你看不到预期窗口的原因。
下面分两种场景给你修改方案:
场景1:想打开文件夹里的前2首歌
我们需要给循环加个计数器,数到2就停止遍历。注意要启用延迟环境变量扩展,因为循环里修改计数器变量需要用!来读取:
@echo off setlocal enabledelayedexpansion rem 设置Spek路径(带空格的路径一定要加引号) set "spek=C:\Program Files (x86)\Spek\spek.exe" rem 设置音频文件路径 set "audio_path=P:\Muzyka\complete\Album" rem 初始化计数器 set count=0 rem 遍历所有mp3文件 for %%a in ("%audio_path%\*.mp3") do ( rem 计数器加1 set /a count+=1 rem 启动Spek打开当前文件 start "" "%spek%" "%%a" rem 计数器到2就退出循环 if !count! equ 2 goto :stop_loop ) :stop_loop endlocal
场景2:想打开指定的2首歌
如果是明确要打开某两首特定的歌曲,直接指定文件名就行,不用循环更简单:
@echo off set "spek=C:\Program Files (x86)\Spek\spek.exe" set "audio_path=P:\Muzyka\complete\Album" rem 替换成你要打开的两首歌的文件名 start "" "%spek%" "%audio_path%\你的第一首歌.mp3" start "" "%spek%" "%audio_path%\你的第二首歌.mp3"
最后再提醒下:设置变量时尽量用set "var=值"的格式,能避免路径前后不小心加了空格导致的错误;带空格的路径一定要用双引号包裹,批处理才会识别为完整的路径。
备注:内容来源于stack exchange,提问作者R2RVFX
相关产品推荐
相关产品推荐

