Board logo

标题: [已解决]求助 如何批量随机更改文件名 [打印本页]

作者: janeter     时间: 2007-2-5 00:23    标题: [已解决]求助 如何批量随机更改文件名

大家好,我现在遇到一个很棘手的要求:
当前目录下有N个txt文件,需要产生随机数,
让每一个文件都重命名为随机数命名,后缀不变.
前面搜索出来的批量命名程序都不能这样修改.尤其是文件少的时候,产生的随机数很容易重复,我不知道如何避免重复,请各位帮助.
@echo off&setlocal ENABLEDELAYEDEXPANSION
for %%a in (*.txt) do call:mytest "%%a"


:mytest

set a=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
set /a a_=(%random%+62)%%62
set /a b_=(%random%+62)%%62
set /a c_=(%random%+62)%%62
set /a d_=(%random%+62)%%62
set /a e_=(%random%+62)%%62
set /a f_=(%random%+62)%%62
echo rename  %1 !a:~%a_%,1!!a:~%b_%,1!!a:~%c_%,1!!a:~%d_%,1!!a:~%e_%,1!!a:~%f_%,1!.txt
rename  %1 !a:~%a_%,1!!a:~%b_%,1!!a:~%c_%,1!!a:~%d_%,1!!a:~%e_%,1!!a:~%f_%,1!.txt
[ Last edited by janeter on 2007-2-4 at 11:04 PM ]
作者: ccwan     时间: 2007-2-5 00:51
楼主搜索一下的话,可以看到论坛有很多这种帖子的。
btw,问一下楼主,既然怕重复,为什么不让文件以序号形式排列呢?那样多么整齐啊。例如1.txt、2.txt……
作者: janeter     时间: 2007-2-5 01:00
呵呵,搜索不到.需求就是定期把目录下面的文件随机更名,所以我才想到搞一个脚本定期执行讷.
作者: jmz573515     时间: 2007-2-5 01:05
你这个应该改成怎么样生成不重复的随机数啊,哈哈
作者: ccwan     时间: 2007-2-5 01:51
就算灌水吧












[ Last edited by ccwan on 2007-2-5 at 03:54 AM ]
作者: janeter     时间: 2007-2-5 09:58

@echo off
for %%a in (*.txt) do call:mytest "%%a"

:mytest
rename  %1 %random%.txt
苦学了一个下午,我终于写了一段可以执行的代码,哈哈......
执行完毕可以随机改名,不过结果总是有一个:
The syntax of the command is incorrect.
不知道咋整了.谢谢各位帮助过我的人,祝你们新年快乐!
作者: namejm     时间: 2007-2-5 11:18
  以下代码能把当前目录下的txt文件更名为1~32767之间的文件名,对已经更名过的文件不再处理,可以试一下:
@echo off
for /f "delims=" %%i in ('dir /a-d /b *.txt^|findstr /v "^[0-9]*\.txt$"') do call :ren_ "%%i"
pause
exit

:ren_
ren %1 %random%.txt 2>nul||goto ren_
goto :eof

作者: anqing     时间: 2007-2-5 11:39
findstr /v "^[0-9]*\.txt$"')新用法,格式,学习了
作者: bsw     时间: 2007-5-10 15:32
好,学习了
作者: zhoushijay     时间: 2007-5-10 15:57
用日期时间命名好了