中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 随机获取文件名的一个新方法
作者:
标题: 随机获取文件名的一个新方法 上一主题 | 下一主题
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『楼 主』:  随机获取文件名的一个新方法

四个月之前一起讨论过随机获取文件名的方法,发现最好的代码是:
一个关于随机获取文件名的问题
24 楼无奈何版主的代码:
@echo off
if "%1" NEQ "$" (
        for /f "tokens=1,2 delims=:" %%a in ('"%~0" $^|sort') do @echo %%b
) else for /f "delims=" %%i in ('dir /b /a-d *.mp3') do @call :sub %%i
goto :EOF

:sub
echo %random%:%*
goto :EOF
及后面大家修改的代码

今晚从:
[精彩][批处理字符出现次数统计]
15 楼 redtek 的 “set .”特殊用法(排序)的灵感:
@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir/a-d/b *.mp3') do set $!random!!random!$%%i=$
for /f "tokens=1,2* delims=$=" %%i in ('set $') do echo %%j
pause


   此帖被 +5 点积分       点击查看详情   
评分人:【 ccwan 分数: +5  时间:2006-12-9 21:43


2006-12-9 13:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

兄代码简捷精彩,欣赏~~



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-9 22:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 3 楼』:  

早上爬起来想到call的应用(不用延迟变量):
@echo off
for /f "delims=" %%i in ('dir/a-d/b *.mmf') do call set $%%random%%$%%i=$
for /f "tokens=1,2* delims=$=" %%i in ('set $') do echo %%j
pause


2006-12-9 22:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 4 楼』:  

哈哈……这个call玩得漂亮~:)



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-9 22:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 5 楼』:  

强,上面的代码稍微修改下就可以用来扫描硬盘的指定(类型)的文件并进行相关操作,比如前段时间中了威金病毒,可以建立一个批处理放到C盘:
@echo off
for /f "delims=" %%i in ('dir /a/b/s desktop.ini') do call set $%%random%%$%%i=$
for /f "tokens=1,2* delims=$=" %%i in ('set $') do echo %%j >>c:\删除的病毒文件.txt
pause

这样会找到所有的_desktop.ini 文件并执行删除操作。

2006-12-10 00:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by HUNRYBECKY at 2006-12-10 00:45:
强,上面的代码稍微修改下就可以用来扫描硬盘的指定(类型)的文件并进行相关操作,比如前段时间中了威金病毒,可以建立一个批处理放到C盘:
...


  威金病毒的主要文件是_desktop.ini,而你这样会把c盘下所有的desktop.ini都删除了,这样会影响系统的一些属性吧。


2006-12-10 01:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: