
从零开始制作VBS自动切换音乐脚本:准备工作和核心原理
其实VBS脚本没你想的那么复杂,它就像用记事本写一段“给电脑下命令”的文字,保存后双击就能运行。我第一次接触VBS是大学时帮老师整理文件,当时用它批量重命名照片,发现这东西虽然看着“朴素”,但处理系统级任务特别好用。现在做音乐切换脚本,本质上就是让它告诉电脑:“去这个文件夹找音乐,播放X分钟后,自动切到下一个文件夹继续播”。
为什么选VBS?三个你无法拒绝的理由
你可能会问:“为什么不用Python或者其他编程语言?” 说实话,我试过用Python写,但需要安装解释器,对电脑小白来说还是有点门槛;用批处理脚本(.bat)又不够灵活,很难精确控制播放时间。VBS的优势就在于:
微软官方文档里提到,VBScript设计初衷就是“让用户通过简单脚本实现系统自动化任务”(链接:https://learn.microsoft.com/zh-cn/previous-versions//f0e1k93f(v=vs.85)),nofollow),所以用它来做音乐切换这种轻量自动化任务,简直是“专业对口”。
准备工作:3样东西让脚本顺利跑起来
在开始写代码前,你需要先准备好这些“原材料”,我把它们列成清单,你可以对照着检查:
1.音乐文件:把不同风格的音乐分别放在不同文件夹,比如“工作轻音乐”“健身动感曲”“睡前纯音乐”,文件夹名称最好用英文或拼音(避免中文路径可能出现的乱码问题,我之前帮朋友调试时遇到过中文路径报错,改成拼音后立刻好了)
2.记事本:Windows自带的记事本就行,不用装Notepad++之类编辑器,当然如果你习惯用其他编辑器也可以
3.基础信息:记下每个音乐文件夹完整路径(右键文件夹→“属性”—“安全”里的“对象名称”就是完整路径,比如“D:MusicWorkMusic”),以及你希望的切换时间(比如工作列表播30分钟后切到休息列表)
这里有个小细节要提醒你:音乐文件格式尽量用MP3或WAV,这两种格式是Windows Media Player默认支持最好的,其他格式(比如FLAC、APE)可能需要系统有解码器,如果你播放时没声音,可以先检查文件格式是不是兼容。
手把手编写脚本:参数设置和完整代码解析
接下来进入实战环节!别担心代码看不懂,我会把每一行都拆解开讲,你就像填表格一样替换成自己的信息就行。我之前教我表妹做过这个,她连Excel公式都搞不太懂,照样10分钟搞定,所以你肯定也没问题。
第一步:用记事本写出基础框架(复制就能用)
打开记事本后,先把下面这段代码复制进去,这是脚本的“骨架”,之后我们只需要修改括号里的内容就行:
Set objPlayer = CreateObject("WMPlayer.OCX.7")
Set objFSO = CreateObject("Scripting.FileSystemObject")
'===== 配置区域:替换成你的信息 =====
MusicFolders = Array("D:MusicWork", "D:MusicRelax") '音乐文件夹路径数组 (按播放顺序排列)
PlayDuration = 1800 '每个列表播放时长(秒),30分钟=1800秒
ShufflePlay = True '是否随机播放单个列表内歌曲 (True=随机, False=顺序)
'=====================================
For Each strFolder In MusicFolders
If objFSO.FolderExists(strFolder) Then
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
ReDim arrFiles(colFiles.Count
1)
i = 0
For Each objFile In colFiles
If LCase(Right(objFile.Name, 3)) = "mp3" Or LCase(Right(objFile.Name, 3)) = "wav" Then
arrFiles(i) = objFile.Path
i = i + 1
End If
Next
ReDim Preserve arrFiles(i
1)
If ShufflePlay Then Call ShuffleArray(arrFiles)
For Each strFile In arrFiles
objPlayer.URL = strFile
objPlayer.Controls.Play
WScript.Sleep PlayDuration 1000
objPlayer.Controls.Stop
Next
Else
MsgBox "文件夹不存在:" & strFolder, vbExclamation
End If
Next
Sub ShuffleArray(arr)
Randomize
For i = UBound(arr) To 1 Step -1
j = Int((i + 1) Rnd)
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
Next
End Sub
第二步:修改“配置区域”参数(关键步骤!)
上面代码里标红的“配置区域”是核心,我用表格详细解释每个参数怎么改,你可以对着填:
参数名称 | 作用说明 | 示例值(可直接抄) | 注意事项 |
---|---|---|---|
MusicFolders | 按顺序播放的文件夹路径 | Array(“D:MusicWork”, “D:MusicRelax”) | 文件夹路径用英文引号包起来,多个路径用逗号分隔 |
PlayDuration | 每个列表播放时长(秒) | 1800(30分钟) | 1分钟=60秒,比如20分钟填1200 |
ShufflePlay | 是否随机播放单个列表歌曲 | True(随机)或 False(顺序) | 首字母大写,不要加引号 |
举个例子:如果你想先播“D:我的音乐学习”文件夹30分钟,再播“D:我的音乐跑步”文件夹20分钟,并且两个列表都随机播放,配置区域就改成:
MusicFolders = Array("D:我的音乐学习", "D:我的音乐跑步") PlayDuration = 1800 '第一个列表播30分钟
ShufflePlay = True
这里有个我踩过的坑:如果文件夹路径里有空格(比如“D:My MusicWork”),一定要用英文引号把路径包起来,不然脚本会找不到文件夹。我第一次帮同事写的时候忘了这步,他双击脚本后一直弹窗说“文件夹不存在”,后来检查才发现是路径里的空格导致的,加上引号后立刻就好了。
第三步:保存并运行脚本(见证奇迹的时刻)
改完参数后,点击记事本左上角“文件”→“另存为”,保存类型选“所有文件”,文件名写“自动切换音乐.vbs”(注意后缀必须是.vbs,不是.txt),编码选“ANSI”(避免中文乱码)。保存后双击这个文件,不出意外的话,你指定的第一个文件夹里的音乐会自动播放,到时间后会无缝切换到下一个文件夹。
如果遇到问题,可以先检查这3点:① 文件夹路径是否正确(复制路径到文件资源管理器里看看能不能打开);② 音乐文件是不是MP3/WAV格式;③ 脚本保存时后缀是不是.vbs(有些电脑默认隐藏文件后缀,可能实际保存成了“自动切换音乐.vbs.txt”,需要在“文件夹选项”里取消勾选“隐藏已知文件类型的扩展名”)。
你可能会发现,脚本运行时任务栏会有Windows Media Player的图标,这是正常的,因为脚本调用的就是系统自带的播放器组件,所以完全不用担心安全问题。如果你想暂停或停止,可以右键任务栏图标操作,或者按Ctrl+Shift+Esc打开任务管理器,在“进程”里找到“wscript.exe”结束进程就行。
如果你按这些步骤试了,欢迎回来告诉我效果!比如你设置了几个播放列表,每个列表播多久,有没有遇到什么奇怪的问题。我最近正在研究怎么让脚本支持按歌曲长度自动调整播放时间,如果你有其他需求也可以告诉我,说不定下次就出进阶版教程啦~
你正在用脚本播放音乐,突然要开会或者接电话,想立刻停下来怎么办?最简单的方法就是看任务栏,右下角那个Windows Media Player的小图标,就是平时听歌时会跳的那个。右键点它,菜单里直接选“停止”就行,音乐马上就停了。不过有时候任务栏图标太多,可能这个小图标被藏在箭头后面了,你点一下任务栏右边的那个小三角,展开所有图标就能找到它,这个小细节我之前帮同事处理时他找了半天,后来发现是被折叠了,其实就藏在常用图标后面,点一下就出来了。
如果想完全关掉脚本,不让它继续在后台等着切换下一个列表,那就得用任务管理器了。按Ctrl+Shift+Esc这三个键,就能直接打开任务管理器,比从开始菜单找方便多了。然后切到“进程”或者“详细信息”标签页,找一个叫“wscript.exe”的进程,看到它就对了,这就是咱们运行的VBS脚本进程。右键点它选“结束任务”,脚本就彻底停了。我之前有个朋友以为关掉播放器就完事了,结果过了半小时脚本又自动播起来吓他一跳,后来才知道得结束这个进程才行,所以记得如果不想让它继续运行,一定要在任务管理器里结束wscript.exe,认准这个名字,别不小心把其他进程关了,毕竟任务管理器里进程那么多,看错了可能影响其他程序运行。
脚本运行时如何停止播放?
可以直接在任务栏找到Windows Media Player的图标,右键选择“停止”;如果需要彻底结束脚本,按Ctrl+Shift+Esc打开任务管理器,在“进程”或“详细信息”标签页找到“wscript.exe”,右键选择“结束任务”即可。
双击脚本后没反应,音乐不播放怎么办?
先检查三个常见问题:① 文件夹路径是否正确(复制路径到文件资源管理器,看能否打开);② 音乐文件是否为MP3或WAV格式(其他格式如FLAC可能需要系统解码器支持);③ 脚本保存时后缀是否为.vbs(部分电脑默认隐藏后缀,可能误存为.txt,需在“文件夹选项”中取消隐藏后缀后修改)。
如何添加更多音乐列表,实现三个以上文件夹切换?
在脚本的“配置区域”,修改MusicFolders参数即可。比如要添加第三个文件夹“D:MusicSleep”,只需将代码改为:MusicFolders = Array("D:MusicWork", "D:MusicRelax", "D:MusicSleep")
,按顺序添加路径,用英文逗号分隔,保存后双击运行,脚本会按数组顺序依次播放所有列表。
脚本支持播放FLAC、APE等无损音乐格式吗?
默认情况下,脚本调用的Windows Media Player组件主要支持MP3和WAV格式。如果需要播放FLAC、APE等无损格式,需要先在系统中安装对应解码器(如K-Lite Codec Pack),安装后重启电脑,脚本即可识别这些格式的音乐文件。
能让脚本开机自动运行吗?
可以通过Windows任务计划程序实现。打开“控制面板→管理工具→任务计划程序”,点击“创建基本任务”,按向导设置“触发条件”为“登录时”,“操作”为“启动程序”,浏览选择你的VBS脚本文件,完成后开机登录系统时脚本会自动运行。注意:如果电脑有密码,可能需要输入密码验证后才会启动。