重新编了一个,不用文本查询,清除写入过列表的变量来判断循环生成随机数
137个文件30秒内完成(随机数运气好的话速度就快,越往后有效变量越少越慢):
红色部分不要
好像有个小毛病:有时候会失败退出:(
[ Last edited by zxcv on 2006-7-28 at 01:19 ]
137个文件30秒内完成(随机数运气好的话速度就快,越往后有效变量越少越慢):
红色部分不要
pause
cls
@echo off
copy nul List.txt >NUL
setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir/b *.mp3^|find ".mp3"') do (
set /a N=!N! + 1
set Name!N!=%%a)
echo.
echo 随机生成列表,请稍等...
echo.
echo 序号 - 随机文件名
echo.
:loop
set N=%random:~-3%
if "%N%" == "000" goto loop
if "%N:~0,1%" == "0" set N=%N:~1%
if "%N:~0,1%" == "0" set N=%N:~1%
if %N% GTR 137 goto loop“137”文件数量
echo set Name=%%Name!N!%%>Temp.bat判断改变量是否被清除
call Temp.bat
if "%Name%" == "" goto loop
set /a M=%M%+1
echo echo %%M%% - %%Name!N!%%>Temp.bat显示序号 - 随机文件名
echo echo %%Name!N!%%^>^>List.txt>>Temp.bat
call Temp.bat
set Name!N!=清除已写入列表的变量
if %M% GEQ 137 goto End“137”文件数量
goto loop
:End
del Temp.bat
echo.
echo 完成!
echo.
pause
exit
好像有个小毛病:有时候会失败退出:(
[ Last edited by zxcv on 2006-7-28 at 01:19 ]

精华I
