Windows 7 如何播放文件夹中的随机视频文件,然后转到下一个文件夹,并使用批处理脚本执行相同操作?

Windows 7 如何播放文件夹中的随机视频文件,然后转到下一个文件夹,并使用批处理脚本执行相同操作?,windows-7,random,batch-file,playlist,Windows 7,Random,Batch File,Playlist,这有点让人困惑,所以我会尽力解释。。顺便说一句,我用的是Windows7电脑 我从小看我喜欢的节目,多年来我把很多节目下载到我的外置硬盘上。我一直在寻找一种方法,通过Windows Media Player为我的每个节目播放随机剧集,但我似乎找不到任何东西 几个月前,有人帮我写了一个批量脚本,几乎完全符合我的要求,但它似乎没有为我的节目随机播放 例如,假设我在一个驱动器中有X个节目,例如,《辛普森一家》、《批评家》、《比尔尼》、《加菲猫》、《蝙蝠侠》等等 在每一个节目中,都有X集,例如《辛普森一

这有点让人困惑,所以我会尽力解释。。顺便说一句,我用的是Windows7电脑

我从小看我喜欢的节目,多年来我把很多节目下载到我的外置硬盘上。我一直在寻找一种方法,通过Windows Media Player为我的每个节目播放随机剧集,但我似乎找不到任何东西

几个月前,有人帮我写了一个批量脚本,几乎完全符合我的要求,但它似乎没有为我的节目随机播放

例如,假设我在一个驱动器中有X个节目,例如,《辛普森一家》、《批评家》、《比尔尼》、《加菲猫》、《蝙蝠侠》等等

在每一个节目中,都有X集,例如《辛普森一家》有85集,《批评家》有24集,《比尔尼》有100集,《加菲猫》有64集等等

我一直在寻找一种方法,这样脚本可以查看辛普森一家的文件夹,然后选择一个随机集,然后转到评论家文件夹,选择一个随机集,然后转到比尔尼文件夹等等

当这一切都完成了,通过我的所有节目,它输出一个播放列表文件。因此,我所要做的就是将播放列表加载到我的Windows Media Player中,而不是花很长时间手动挑选要观看的每一集

好吧,几个月前有人给我写了这篇文章,但经过几周的测试,它似乎不是真正随机的,因为它似乎重复了上一个播放列表中的一些相同的片段。一些文件夹有超过100个节目,所以我不明白为什么它仍然会播放同一集,如果它是随机的

我试图找到那个人,但我失去了联系,如果有人能帮助我^_^

以下是脚本:

SET extensionList=avi mp4 mkv
SET cnt=0
:Loop
  SET /A cnt+=1
IF EXIST %cnt%.m3u GOTO Loop
>%cnt%.m3u ECHO.#EXTM3U
FOR /D %%a IN (c:\testing\*) DO CALL :PickFile "%%a"
GOTO :EOF

:PickFile
SET searchList=
FOR %%b IN (%extensionList%) DO CALL SET searchList=%%searchList%% "%~1\*.%%b"
FOR /F %%b IN ('2^>NUL DIR /A-D-H-S %searchList% ^| FIND "File(s)"') DO SET limit=%%b
SET /A fileNum=(%random% %% limit) + 1
FOR /F "tokens=2 delims=:" %%b IN ('2^>NUL DIR /A-D-H-S/B %searchList% ^| FINDSTR /N ".*" ^| FINDSTR "^%fileNum%:"') DO ^
CALL :AddList %1 "%%b" >>%cnt%.m3u
GOTO :EOF

:AddList
@ECHO.#EXTINF:-1,%~n2
@ECHO.%~f1\%~2
@GOTO :EOF
在这个脚本中,它会输出一个*.m3u文件,每次我要单击的次数为X次

这个脚本的问题是,它似乎在某些节目中重复某些插曲,我想知道是否可以对它进行一些修改,使其成为真正的随机插曲,或者是一种方式,使上一集不会在下一个播放列表中重复

我希望我没有混淆任何人,我对编程了解不多。我高中时曾尝试过C++学习,但我经历了一段艰难的时光。我只知道基本知识,但如果有人能帮我~我将永远欠你的债


如果有人有任何问题,我将非常乐意尽快回答~再次感谢^ ^ ^

我认为这里需要一些测试:

这是获取随机数的另一种方法

%random% * 10 / 32768 + 1
在运行了几次之后,我发现它确实产生了比您正在运行的版本稍好的平均值

为了测试,我为每个版本做了1000次

塔米手稿

巴厘脚本

然后,在此情况下,计算每个数字出现1-10的次数

for /l %%a in (1,1,10) do (
find /c "%%a" tammy.txt
) >>tammycount.txt

for /l %%b in (1,1,10) do (
find /c "%%b" bali.txt
) >>balicount.txt
然后比较结果

tammycount.txt

balicount.txt

正如您所看到的,balicount显示的平均数字比您预期的稍多,因此可能值得尝试我的版本,看看是否更好

很明显,你需要做很多次才能得到真正的结果,但如果你有时间的话,这可能是值得的

setlocal enabledelayedexpansion
for /l %%a in (1,1,1000) do (
SET /A num=!random! * 10 / 32768 + 1
echo !num! >>bali.txt
)
for /l %%a in (1,1,10) do (
find /c "%%a" tammy.txt
) >>tammycount.txt

for /l %%b in (1,1,10) do (
find /c "%%b" bali.txt
) >>balicount.txt
---------- R2.TXT: 203

---------- R2.TXT: 103

---------- R2.TXT: 82

---------- R2.TXT: 101

---------- R2.TXT: 95

---------- R2.TXT: 87

---------- R2.TXT: 107

---------- R2.TXT: 118

---------- R2.TXT: 104

---------- R2.TXT: 99
---------- R.TXT: 201

---------- R.TXT: 90

---------- R.TXT: 91

---------- R.TXT: 101

---------- R.TXT: 108

---------- R.TXT: 97

---------- R.TXT: 101

---------- R.TXT: 105

---------- R.TXT: 106

---------- R.TXT: 106