[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aloha20200628 于 2023-12-25 18:09 编辑

回复 23# yanni_enya

新版本在已播放列表文件中加入行首序号。
  1. @echo off &setlocal enabledelayedexpansion
  2. set "i=0" &set "7F=D:\jhrw\现用音乐\music\list.7"
  3. if not exist "!7F!" (cd.>"!7F!") else for /f %%k in ('find /v /c "" ^<"!7F!" ') do (set "i=%%k" &if %%k geq 7 (cd.>"!7F!"))
  4. for %%b in ("D:\jhrw\现用音乐\music\*.bat") do (set/a "n+=1" &set "$!n!=%%b")
  5. :[Loop]
  6. set/a m=%random%%%%n%+1
  7. for %%k in (!m!) do (set "mF=!$%%k!")
  8. find /i "!mF!" "!7F!">nul && goto[Loop]
  9. set/a "i+=1" &echo,!i!: !mF!>>"!7F!"
  10. start "" "!mF!"
  11. endlocal &exit/b
复制代码

TOP

回复 21# aloha20200628


    新的需求:music下歌曲越来越多,已播放列表的文件也多起来了,能否给已播放列表里记录的每首歌曲的前边把序号加上,这样看起来一目了然,不然太费眼睛了!

TOP

回复 21# aloha20200628
  灰常感谢

TOP


代码中的 7F 是变量名,list.7 是文件名,只有 geq 7 中的 7 才是直接影响重复天数的关键值,作整体替换没问题。
回复 20# yanni_enya

TOP

回复 19# aloha20200628


       您的代码目前我都是整体替换数字7,music文件夹里有多少曲目,我就替换成对应的数字。
       geq 后边跟的数字代表对应天数不重复播放歌曲,请问代码中多个7F仅仅是个名称是么?  list.7  后边的数字7也可以随意修改么?

TOP

回复 18# yanni_enya

一。15楼代码并没有生成待播列表文件,与曲库乐曲对应的*.bat实际上就相当于待播文件。
二。作为建议,如果你的曲库有上百首,也可将15楼代码第3行中的 geq 7 改为 geq 30,即每月每天不重复播放;如有上千首,甚至可改为 geq 365,即每年每天不重复播放。
三。只要曲目名称或与其对应的*.bat名称不含那些欧洲古典乐曲中常见的 ä、č 等怪异字符,代码运行就不会因其“作祟”。

TOP

本帖最后由 yanni_enya 于 2023-12-19 15:19 编辑

回复 15# aloha20200628


    能用!! 需要保存成ANSI码,估计之前几位大神的代码也能用,只是我没另存为ANSI码就运行了,实在抱歉啊!

    试了半天,大概是这个样子:1、我们在music下能看到已播列表,不晓得在哪生成了一个7次播放都不会重复的待播列表(所谓的7天就是7天内,每天播一首),然后第8次播放就会重新生成一个新的7首曲目不重复播放的列表,依次循环。(music文件夹下生成的已播
                                              列表一旦删除,再次执行代码会随机生成新的待播列表)
                                         2、而且在电脑任意位置执行同一组代码,都是指向同一个随机生成的播放列表!
                                         3、修改播放数字后,生成的播放列表各是各,互不干扰。
    明白了这些代码也就好改了,非常感谢诸位大神,膜拜了

TOP

回复 10# yanni_enya


啊,7楼代码第19行后面的
start "%ph%\已播放\%%~nxa"
改成
start "" "%ph%\已播放\%%~nxa"
或者其他播放命令

默认音乐文件位置是D:\jhrw\现用音乐\music,不是的话自己修改(7楼代码第4行),还有,得保存为ansi编码的bat

TOP

回复 14# yanni_enya


那就奇怪了,应该到第3行就会出错的,但不应该提示%%a

TOP

本帖最后由 aloha20200628 于 2023-12-14 12:39 编辑


假设楼主的曲库不超过8000首,以便批处理脚本可采用最便捷的变量名字典匹配方法;
假设楼主的 D:\jhrw\现用音乐\music\*.bat 其中的文件名不含如 ä、č 等欧洲古典曲目中常见的怪异字符,以免再来回切换系统码页(936/65001)。
代码会在 D:\jhrw\现用音乐\music 目录中创建一个7天有效期记录文件 D:\jhrw\现用音乐\music\list.7,逾期自动清零。
  1. @echo off &setlocal enabledelayedexpansion
  2. set "7F=D:\jhrw\现用音乐\music\list.7"
  3. if not exist "!7F!" (cd.>"!7F!") else for /f %%k in ('find /v /c "" ^<"!7F!" ') do if %%k geq 7 (cd.>"!7F!")
  4. for %%b in ("D:\jhrw\现用音乐\music\*.bat") do (set/a "n+=1" &set "$!n!=%%b")
  5. :[Loop]
  6. set/a m=%random%%%%n%+1
  7. for %%k in (!m!) do (set "mF=!$%%k!")
  8. find /i "!mF!" "!7F!">nul && goto[Loop]
  9. echo,!mF!>>"!7F!"
  10. start "" "!mF!"
  11. endlocal &exit/b
复制代码

TOP

回复 12# idwma


    人狠话不多,直接按要求上代码,优秀~
    您的代码也是一闪而过,问题仍然是:此处不应有 %%a。
    网盘传图片我不会,抱歉没图。

TOP

回复 10# yanni_enya


如果需要上传文件,请用使用网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 idwma 于 2023-12-13 18:30 编辑
  1. @echo off&color a&setlocal enabledelayedexpansion
  2. for %%a in ("D:\jhrw\现用音乐\music\*.bat.skip") do set /a n+=1
  3. if n geq 7 (
  4. for %%a in ("D:\jhrw\现用音乐\music\*.bat.skip") do move "%%i" "%%~dpni"
  5. )
  6. set n=
  7. for %%a in ("D:\jhrw\现用音乐\music\*.bat") do set /a n+=1
  8. set /a m=%random%%%%n%
  9. if %m% equ 0 set m=%n%
  10. for %%a in ("D:\jhrw\现用音乐\music\*.bat") do (
  11. set /a counter+=1
  12. if !counter! equ %m% (
  13. start %%a
  14. ping -n 2 127.0.0.1 >nul
  15. move "%%a" "%%a.skip"
  16. )
  17. )
复制代码

TOP

回复 8# yanni_enya


   如果要实现你描述的功能,以我的水平,只会使用第三方命令行工具nircmd 和mpv ,用一个批处理就可完成。(如果每个音频都搭配一个批处理,好像有点失去批处理的魅力了...)
已在4楼更新代码,代码已测试。
bat小白,请多指教!谢谢!

TOP

回复 7# Five66


    也是个办法,但是运行时一闪而过,我在cmd里看了一下,提示两次:此时不应有%%a。
    我想上传图,总是失败,抱歉。

TOP

返回列表