![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 23:03 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]如何从一个文件夹内随机的显示一个文件? |
| 可打印版本 708 / 8 |
| 第1楼 tempuser | 发表于 2008-12-17 12:04 |
| 高级用户 发帖 261 积分 547 | |
|
[已结]如何从一个文件夹内随机的显示一个文件? 比如文件内有50个文件,我想随机的显示它们该如何做呢?
[ Last edited by HAT on 2008-12-17 at 12:37 ] |
|
| 第2楼 tempuser | 发表于 2008-12-17 12:17 |
| 高级用户 发帖 261 积分 547 | |
|
呵呵!搞定了.谢谢论坛啊!
@echo off&setlocal EnableDelayedExpansion set "Play=c:\Program Files\Windows Media Player\wmplayer.exe" set ppath=c:\music set/a num=%random%%%13+1 for /f "delims=" %%i in ('dir /b c:\music') do ( set /a n+=1 if !n! equ !num! set var=%%i echo !var! ) start /min "" "%Play%" "%ppath%\%var%" |
|
| 第3楼 moniuming | 发表于 2008-12-17 12:22 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
这样?
|
|
| 第4楼 tempuser | 发表于 2008-12-17 13:12 |
| 高级用户 发帖 261 积分 547 | |
Originally posted by moniuming at 2008-12-17 12:22: |
|
| 第5楼 moniuming | 发表于 2008-12-17 13:32 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
Originally posted by tempuser at 2008-12-17 13:12: set "_!n!=%%a" 这个"_"可以是任何非特殊字符,也可以用你的ID"tempuser",如set "tempuser!n!=%%a",这是为了给每个文件设置一个变量,好随机调用. set /a "num=%random%%%%n%+1" 这样可能更容易看些:set /a "num=%random% %% %n%+1" 就是给"num"赋值,它的值是"随机数"除以文件总数加上1,如果不加"1"会不正确,比如100除以6的余数是0~5,这样就会比文件总数少1,这就是加1的原因. %random%是一个随机数 %%表示取余运算 %n%是文件的总数 由于之前已经给每个文件赋值,它们的值分别为:"_1","_2","_3"等等,而"%num%"是一个随机的余数,echo !_%num%!这样就达到了随机显示的目的了. |
|
| 第6楼 moniuming | 发表于 2008-12-17 13:41 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
给一个2楼的参考代码:
|
|
| 第7楼 tempuser | 发表于 2008-12-17 13:56 |
| 高级用户 发帖 261 积分 547 | |
|
谢谢,很受益!
|
|
| 第8楼 tempuser | 发表于 2008-12-17 14:21 |
| 高级用户 发帖 261 积分 547 | |
|
再请教一个问题,文件名是怎么过来的呢?
set /a "num=%random%%%%n%+1" 现在的num是一个数字 echo.!_%num%! 现在加了个_,要显示的文件名就显示了,难道它是由"_!n!=%%a"传过来的吗?可是它们之间的桥梁呢? |
|
| 第9楼 moniuming | 发表于 2008-12-17 15:00 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
试试下面的代码?
我这个菜鸟一直都是这样过来的,当遇到不明白的代码时,就去掉"echo off",然后分析,当然,有时候要在适当的地方加个"pause".相信通过下面的代码应该可以理解了吧? |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |