Batch file 如何通过批处理文件随机化声音? 我正处于这个无害的程序中,我正在批量写作,但是我遇到了声音有效载荷中间的一个问题。不管随机变量是什么,它永远播放相同的声音(我确实希望它循环)。 这是我的密码: SET /A RAND=%RANDOM% %%5 echo %RAND% if %RAND%==0 set file="\Windows Exclamation.wav" if %RAND%==1 set file="\tada.wav" if %RAND%==2 set file="\Windows Critical Stop.wav" if %RAND%==3 set file="\Windows Error.wav" if %RAND%==4 set file="\Windows Background.wav" ( echo Set Sound = CreateObject("WMPlayer.OCX.7"^) echo Sound.URL = %file% echo Sound.Controls.play echo do while Sound.currentmedia.duration = 0 echo wscript.sleep 100 echo loop echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs attrib +h +s sound.vbs start /min sound.vbs ping localhost -n 1 >NUL goto top

Batch file 如何通过批处理文件随机化声音? 我正处于这个无害的程序中,我正在批量写作,但是我遇到了声音有效载荷中间的一个问题。不管随机变量是什么,它永远播放相同的声音(我确实希望它循环)。 这是我的密码: SET /A RAND=%RANDOM% %%5 echo %RAND% if %RAND%==0 set file="\Windows Exclamation.wav" if %RAND%==1 set file="\tada.wav" if %RAND%==2 set file="\Windows Critical Stop.wav" if %RAND%==3 set file="\Windows Error.wav" if %RAND%==4 set file="\Windows Background.wav" ( echo Set Sound = CreateObject("WMPlayer.OCX.7"^) echo Sound.URL = %file% echo Sound.Controls.play echo do while Sound.currentmedia.duration = 0 echo wscript.sleep 100 echo loop echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs attrib +h +s sound.vbs start /min sound.vbs ping localhost -n 1 >NUL goto top,batch-file,Batch File,属性+r(attrib+r命令)使以只读方式输入的文件(此时不可能删除/刷新/重写),因此,第一个文件(始终选中第一个wav)不会更改,因为通过设置命令attrib+r无法“编辑”。 @echo on&setlocal EnableDelayedExpansion ::这用于在循环中选择新声音时写入新的.vbs: (nul>nul) :_循环 ::选项[1]使用:Set/a _rand=%random%*5/32768将自动验证随机变量限制在0-4范围内 ::选项[2]使用:Set _rand

属性+r(attrib+r命令)使以只读方式输入的文件(此时不可能删除/刷新/重写),因此,第一个文件(始终选中第一个wav)不会更改,因为通过设置命令attrib+r无法“编辑”。

@echo on&setlocal EnableDelayedExpansion
::这用于在循环中选择新声音时写入新的.vbs:
(nul>nul)
:_循环
::选项[1]使用:Set/a _rand=%random%*5/32768将自动验证随机变量限制在0-4范围内
::选项[2]使用:Set _rand=%time:~-1%从毫秒数中及时获取最后一个单位
设置/a\u rand=!时间:~-1!
如果全球技术法规[“4”](
转到:_循环
)否则(
::我不确定文件路径中“\”的位置,因为我已更改为“\”以测试文件夹中wav的文件:
如果[“!\u rand!”]=[“0”]设置_file=“.\Windows感叹号.wav”
如果[“!\u rand!”]=[“1”]设置文件=。\tada.wav
如果[“!\u rand!”]=[“2”]设置_file=“.\Windows临界停止.wav”
如果[“!\u rand!”]=[“3”]设置文件=。\Windows Error.wav
如果[“!\u rand!”]=[“4”]设置_file=“.\Windows Background.wav”
)
(
( 
echo/Set Sound=CreateObject^(“WMPlayer.OCX.7”^)
echo/Sound.URL=!\u文件!
echo/Sound.Controls.play
Sound.currentmedia.duration=0时回声/执行
echo/wscript.sleep 100
回波/环路
echo/wscript.sleep(int(Sound.currentmedia.duration^)+1^)*1000)
)>.vbs
) && ( 
启动“”/min wscript/nologo。\sound.vbs
::在wscript使用文件后添加属性,或wscript无法创建文件.vbs:
attrib+h+s。\sound.vbs
ping localhost-n 1>NUL
) || ( 
echo/E R O R:File.vbs未生成^!
)
后藤:顶

只需稍作更改,vbs脚本就会接受一个参数,因此您不必为每个声音重写
声音。vbs

@echo off
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
  echo Sound.URL = WScript.Arguments(0^)
  echo Sound.Controls.play
  echo do while Sound.currentmedia.duration = 0
  echo wscript.sleep 100
  echo loop
  echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
) >sound.vbs

:top
SET /A RAND=%RANDOM% %%5
if %RAND%==0 set "file=C:\Windows\media\Windows Exclamation.wav"
if %RAND%==1 set "file=C:\Windows\media\tada.wav"
if %RAND%==2 set "file=C:\Windows\media\Windows Critical Stop.wav"
if %RAND%==3 set "file=C:\Windows\media\Windows Error.wav"
if %RAND%==4 set "file=C:\Windows\media\Windows Background.wav"
echo %RAND% %file%    
start /min sound.vbs "%file%"
timeout 2 >nul
goto :top

删除
attrib
命令。它可以防止文件被覆盖。(您应该注意到“拒绝访问”消息…)