![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 13:37 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批量随机重命名与反重命名 |
| 可打印版本 3,577 / 54 |
| 第31楼 pinghu | 发表于 2008-02-10 18:00 |
| 中级用户 发帖 130 积分 307 | |
|
30楼的话是对terse兄讲的,另外我的考虑:(对terse说)
将已经重命名为随机字符再次重命名为随机字符,可以实现倒是可以实现,是否有意义? |
|
| 第32楼 gundam72 | 发表于 2008-02-10 18:02 |
| 初级用户 发帖 19 积分 40 | |
|
pinghu兄和terse兄的两个我都测试了下
在功能上来说pinghu兄的要好些,能够设定重命名的位数并且集成在鼠标右键这点比较方便 在执行效率上来说terse兄的好,我对739个文件测试了下,terse兄的随机命名速度要快很多,不知道是不是随机策略不同呢?恢复原名的速度基本一样 这2个都已经能用了,非常感谢你们的帮助~ |
|
| 第33楼 gundam72 | 发表于 2008-02-10 18:07 |
| 初级用户 发帖 19 积分 40 | |
|
另外补充一点,terse兄的随机重命名后有提示这点比较好,在对多文件进行重命名时比较重要,希望pinghu兄可以改进一下
|
|
| 第34楼 gundam72 | 发表于 2008-02-10 18:11 |
| 初级用户 发帖 19 积分 40 | |
|
上面的这个建议有点问题
pinghu兄的随机重命名完成后是直接退出,也可以的 |
|
| 第35楼 pinghu | 发表于 2008-02-10 18:12 |
| 中级用户 发帖 130 积分 307 | |
|
看来terse兄的代码我还是没会用,教教我怎么用
|
|
| 第36楼 gundam72 | 发表于 2008-02-10 18:27 |
| 初级用户 发帖 19 积分 40 | |
|
很奇怪,terse兄的我怎么越用越慢...可能我机子的问题
现在看来terse兄和pinghu兄的执行效率上还是差不多的,恢复方面pinghu兄的要快些 |
|
| 第37楼 gundam72 | 发表于 2008-02-10 18:31 |
| 初级用户 发帖 19 积分 40 | |
|
pinghu兄和terse兄的2个代码都可以用,个人还是比较喜欢pinghu兄的,功能方面更完善些,terse兄的随机命名后生成的重命名.bat方便这些文件在别的机子上进行恢复,也不错
真的很谢谢你们的热心帮助 |
|
| 第38楼 gundam72 | 发表于 2008-02-10 18:37 |
| 初级用户 发帖 19 积分 40 | |
|
批处理真的很神奇,2k不到的程序就能解决问题
呵呵,等有时间了一定也好好的学习批处理 |
|
| 第39楼 gundam72 | 发表于 2008-02-10 18:44 |
| 初级用户 发帖 19 积分 40 | |
|
这个程序我觉得还有完善的空间
能否实现文件名位数在一定范围内变动,比如命名成a1,fb2sw,2ie这样呢? |
|
| 第40楼 slore | 发表于 2008-02-10 18:57 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
随机先生成一个位数……那么都写那么多,不难。呵呵
我是拿来主义~超懒……你们继续努力。 |
|
| 第41楼 terse | 发表于 2008-02-10 19:35 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by pinghu at 2008-2-10 17:54: 修改了一下 Originally posted by pinghu at 2008-2-10 17:53: @echo off for /f "delims=" %%i in ('dir /b /a-d "重命名*.bat" 2^>nul') do set n=%%~ni set n=%n:重命名=% if not exist 重命名.bat set fils=重命名.bat&&goto choice set/a n+=1 set fils=重命名%n%.bat :choice set /p aa=重命名X 恢复H if %aa%==x goto renam if %aa%==h (goto resume) else goto :choice goto :eof :renam set /p pt=请输入随机字母的位数: for /f "delims=" %%i in ('dir /b /a-d *.*^|findstr /v "^重命名.*.bat$"') do ( set nx=%%~xi if not "%%~fi" == "%~f0" call :loop "%%i" ) >>%fils% echo del %%0 pause goto :eof :loop for /l %%i in (1,1,%pt%) do (call :lp) >>%fils% echo ren "%var%%nx%" %1 ren %1 "%var%%nx%" for %%i in (n var) do set %%i= goto :eof :lp set str=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ set/a s=%random%%%62 call set var=%var%%%str:~%s%,1%% goto :eof :resume if not exist 重命名.bat (echo 之前没有进行重命名操作 无法恢复&pause&goto :eof) echo 之前共操作了%n%次重命名 set/p t=恢复之前第几次操作 set/a t-=1 if %n% equ 1 set fils=重命名.bat &&goto resume2 :hf set/a n-=1 set fils=重命名%n%.bat :resume2 if %n% equ 0 set fils=重命名.bat call %fils% if %n% equ %t% goto :eof goto hf |
|
| 第42楼 pinghu | 发表于 2008-02-10 19:38 |
| 中级用户 发帖 130 积分 307 | |
|
我认为文件名长度一样的比较好看,随机的长度也是很容易实现的
|
|
| 第43楼 gundam72 | 发表于 2008-02-10 19:46 |
| 初级用户 发帖 19 积分 40 | |
|
因为我需要将一些比较大的资源做成伪图片格式上传的163相册保存,但是网易最近在封杀文件名有规律的图片,所以我才想到要随机命名,如果能实现文件名长度在一定范围内随机的话就最好了
|
|
| 第44楼 pinghu | 发表于 2008-02-10 20:02 |
| 中级用户 发帖 130 积分 307 | |
|
修正了只能手动删除文件名列表的bug @echo off
setlocal enabledelayedexpansion call :%* 2>nul || goto choice goto :eof :choice set /p aa=安装右键菜单A,卸载右键菜单X: if %aa%==a goto :install if %aa%==x (goto :uninstall)else goto :choice goto :eof :resume cd /d "%~1" if not exist 重命名列表.txt (echo 这个文件夹里没有“重命名列表.txt”,无法恢复&pause&goto :eof) del 临时.txt 2>nul for /F "tokens=1* delims=:" %%i in ('findstr /n .* 重命名列表.txt') do set "line=%%i" &set "num%%i=%%j" for /L %%i in (!line!,-1,1) do (>> 临时.txt echo.!num%%i!) for /f "tokens=1,2 delims=^|" %%c in (临时.txt) do (ren %%d %%c) del 临时.txt goto :eof :renam cd /d "%~1" if exist 重命名列表.txt set /p cc=当前文件夹下已存在一个重命名列表,再次重命名会导致原始文件名列表的丢失,如要继续请按A: if /i %cc%==a (goto :next) else goto :eof :next del 重命名列表.txt set /p nn=请输入随机字母的位数: for %%b in (*.*) do ( if "%%~nxb"=="重命名列表.txt" goto :eof call :ranwd2 ren %%~nxb !filename!%%~xb echo %%~nxb^|!filename!%%~xb >>重命名列表.txt ) goto :eof :ranwd2 set word= for /l %%a in (1,1,%nn%) do (call :ranwd1) if not exist %word%.* (set filename=%word%) else call :ranwd2 goto :eof :ranwd1 call :ranltr set word=%word%%letter% goto :eof :ranltr set letter=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ set /a num=%random%%%62 call set letter=!letter:~%num%,1! goto :eof :install reg add "hkcr\directory\shell\文件夹内文件随机字母重命名\command" /f /t reg_sz /v "" /d "\"%~0\" renam \"%%1\"" reg add "hkcr\directory\shell\反重命名\command" /f /t reg_sz /v "" /d "\"%~0\" resume \"%%1\"" goto :eof :uninstall reg delete "hkcr\directory\shell\反重命名" /f reg delete "hkcr\directory\shell\文件夹内文件随机字母重命名" /f goto :eof |
|
| 第45楼 pinghu | 发表于 2008-02-10 20:06 |
| 中级用户 发帖 130 积分 307 | |
|
问一下楼主:你用这个批处理做什么呢,管理网站吗?
|
|
| 上一页 1 2 3 4 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |