Board logo

标题: 随机获取文件名的一个新方法 [打印本页]

作者: zh159     时间: 2006-12-9 13:46    标题: 随机获取文件名的一个新方法

四个月之前一起讨论过随机获取文件名的方法,发现最好的代码是:
一个关于随机获取文件名的问题
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

作者: redtek     时间: 2006-12-9 22:38
兄代码简捷精彩,欣赏~~
作者: zh159     时间: 2006-12-9 22:46
早上爬起来想到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

作者: redtek     时间: 2006-12-9 22:50
哈哈……这个call玩得漂亮~:)
作者: HUNRYBECKY     时间: 2006-12-10 00:45
强,上面的代码稍微修改下就可以用来扫描硬盘的指定(类型)的文件并进行相关操作,比如前段时间中了威金病毒,可以建立一个批处理放到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 文件并执行删除操作。
作者: lxmxn     时间: 2006-12-10 01:54


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


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