中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-17 20:19
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一个关于随机获取文件名的问题. 精华I 查看 17,364 回复 54
46 发表于 2006-12-11 07:49 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
反复sort也只是以最后一个为准,如果sort一次提取一次的话无疑是舍本逐末。
如果要求不高,可以浅尝辄止;否则还是利用 random 来得好。
47 发表于 2006-12-20 23:36 ·  中国 湖南 娄底 电信
初级用户
积分 28
发帖 11
注册 2006-11-05 21:22
UID 69699
性别 男
状态 离线
请看看这样行不行啊
@echo off
for %%i in (*.mp3) do (
echo %%i >>1.txt
)
exit
48 发表于 2007-01-21 01:33 ·  中国 广东 阳江 电信
新手上路
积分 8
发帖 4
注册 2007-01-15 12:34
UID 76585
性别 男
状态 离线
收下了,以后研究
49 发表于 2007-02-01 02:58 ·  中国 湖南 长沙 联通
社区乞丐
★★
gaoshou
积分 -16
发帖 77
注册 2007-01-30 09:11
UID 78105
性别 男
状态 离线
再顶
实在是太好了
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
look +1 2007-10-22 13:59
:cool:
50 发表于 2007-03-02 02:28 ·  中国 山东 青岛 联通
新手上路
积分 10
发帖 5
注册 2006-11-21 04:48
UID 71206
性别 男
状态 离线
以实现WMP的随机播放.
播放器里就有这个功能吧!这么多改来改去的多麻烦
51 发表于 2007-03-09 02:28 ·  新西兰
初级用户
积分 107
发帖 47
注册 2007-03-03 03:12
UID 80618
性别 男
状态 离线
全是高手 i 服了 u
52 试试我的 发表于 2007-03-09 10:15 ·  中国 湖北 武汉 电信
初级用户
积分 22
发帖 10
注册 2007-02-16 22:46
UID 79647
性别 男
状态 离线
@echo off
setlocal ENABLEDELAYEDEXPANSION

set /p mypath=请输入MP3文件所在的目录,直接回车使用当前目录:
set t1=%time%
set /a num=1
rem 下面这行不能处理有空格的路径(谁能告诉我怎么解决呀)
rem for /f %%i in ('dir /b *.mp3') do (
rem 下面这行可以处理空格,请自己修改路径
for /R %mypath% %%i in (*.mp3) do (
set s!num!=%%i
set /a num+=1
)

set /a fcount=%num%
set /a fcount-=1

:loop
set /a rnd=%random%
set /a rnd%%=%num%
set /a rnd+=1

if not "!s%rnd%!"=="" (
echo !s%rnd%!
call :swap %rnd% "!s%num%!"
set s%num%=
set /a num-=1
)

if %num% GTR 1 goto loop

echo 文件总数:%fcount%
echo 开始时间:%t1%
echo 结束时间:%time%

:swap
set stmp=%2
set s%1=%stmp:~1,-1%

[ Last edited by test266 on 2007-3-9 at 11:29 AM ]
53 发表于 2007-03-09 22:47 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
楼下的好像不能处理带有空格和减号的文件名...
54 发表于 2008-12-30 23:27 ·  中国 贵州 安顺 电信
初级用户
积分 94
发帖 49
注册 2008-12-14 20:47
UID 133884
性别 男
状态 离线
Originally posted by zh159 at 2006-12-10 14:29:
把俺最新的也加入这贴吧^_^

@echo off
for /f "delims=" %%i in ('dir/a-d/b *.mp3') do call set $%%random%%$%%i=$
for /f "tokens=1,2* delims=$=" %%i in ('set $ ...

把这个改来听歌不错,空列表随机播放。
@echo off
for /f "delims=" %%i in ('dir/a-d/b/s *.mp3,*.wma,*.ape') do call set $%%random%%$%%i=$
for /f "tokens=1,2* delims=$=" %%i in ('set $') do "C:\Program Files\MPlayer\mplayer.exe" "%%j"

感觉下面这个要稍快点。
@echo off
for /r . %%i in (*.mp3,*.wma,*.ape) do call set $%%random%%$%%i=$
for /f "tokens=1,2* delims=$=" %%i in ('set $') do "C:\Program Files\MPlayer\mplayer.exe" "%%j"


[ Last edited by linee on 2008-12-31 at 05:28 ]
55 发表于 2009-01-05 15:07 ·  中国 贵州 安顺 电信
初级用户
积分 94
发帖 49
注册 2008-12-14 20:47
UID 133884
性别 男
状态 离线
参考24楼,34楼,把我修改的也贴在这吧。
@echo off
(for %1 %%i in (*.mp3,*.wma)do call echo %%random%%=%%i)%3>nul&%2:EOF
for /f "tokens=2delims==" %%a in ('"%~0" /r,goto,2^|sort')do echo %%a


@echo off&%~1
for /f "tokens=2delims==" %%a in ('%~0 "(for /r %%i in (*.mp3,*.wma)do call echo %%^random%%=%%i)&goto:EOF"^|sort')do echo %%a


[ Last edited by linee on 2009-1-7 at 23:09 ]
论坛跳转: