中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] [4] »
作者:
标题: 批量随机重命名与反重命名 上一主题 | 下一主题
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 31 楼』:  

30楼的话是对terse兄讲的,另外我的考虑:(对terse说)
将已经重命名为随机字符再次重命名为随机字符,可以实现倒是可以实现,是否有意义?

2008-2-10 18:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gundam72
初级用户





积分 40
发帖 19
注册 2008-2-9
状态 离线
『第 32 楼』:  

pinghu兄和terse兄的两个我都测试了下
在功能上来说pinghu兄的要好些,能够设定重命名的位数并且集成在鼠标右键这点比较方便
在执行效率上来说terse兄的好,我对739个文件测试了下,terse兄的随机命名速度要快很多,不知道是不是随机策略不同呢?恢复原名的速度基本一样
这2个都已经能用了,非常感谢你们的帮助~

2008-2-10 18:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gundam72
初级用户





积分 40
发帖 19
注册 2008-2-9
状态 离线
『第 33 楼』:  

另外补充一点,terse兄的随机重命名后有提示这点比较好,在对多文件进行重命名时比较重要,希望pinghu兄可以改进一下

2008-2-10 18:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gundam72
初级用户





积分 40
发帖 19
注册 2008-2-9
状态 离线
『第 34 楼』:  

上面的这个建议有点问题
pinghu兄的随机重命名完成后是直接退出,也可以的

2008-2-10 18:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 35 楼』:  

看来terse兄的代码我还是没会用,教教我怎么用

2008-2-10 18:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gundam72
初级用户





积分 40
发帖 19
注册 2008-2-9
状态 离线
『第 36 楼』:  

很奇怪,terse兄的我怎么越用越慢...可能我机子的问题
现在看来terse兄和pinghu兄的执行效率上还是差不多的,恢复方面pinghu兄的要快些

2008-2-10 18:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gundam72
初级用户





积分 40
发帖 19
注册 2008-2-9
状态 离线
『第 37 楼』:  

pinghu兄和terse兄的2个代码都可以用,个人还是比较喜欢pinghu兄的,功能方面更完善些,terse兄的随机命名后生成的重命名.bat方便这些文件在别的机子上进行恢复,也不错
真的很谢谢你们的热心帮助

2008-2-10 18:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gundam72
初级用户





积分 40
发帖 19
注册 2008-2-9
状态 离线
『第 38 楼』:  

批处理真的很神奇,2k不到的程序就能解决问题
呵呵,等有时间了一定也好好的学习批处理

2008-2-10 18:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gundam72
初级用户





积分 40
发帖 19
注册 2008-2-9
状态 离线
『第 39 楼』:  

这个程序我觉得还有完善的空间
能否实现文件名位数在一定范围内变动,比如命名成a1,fb2sw,2ie这样呢?

2008-2-10 18:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 40 楼』:  

随机先生成一个位数……那么都写那么多,不难。呵呵
我是拿来主义~超懒……你们继续努力。

2008-2-10 18:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 41 楼』:  



  Quote:
Originally posted by pinghu at 2008-2-10 17:54:
这个代码只能支持jpg文件的重命名,还需要改进一下

修改了一下

  Quote:
Originally posted by pinghu at 2008-2-10 17:53:
terse兄,我帮你测试了,提示我找不到文件!

@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



简单!简单!再简单!
2008-2-10 19:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 42 楼』:  

我认为文件名长度一样的比较好看,随机的长度也是很容易实现的

2008-2-10 19:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gundam72
初级用户





积分 40
发帖 19
注册 2008-2-9
状态 离线
『第 43 楼』:  

因为我需要将一些比较大的资源做成伪图片格式上传的163相册保存,但是网易最近在封杀文件名有规律的图片,所以我才想到要随机命名,如果能实现文件名长度在一定范围内随机的话就最好了

2008-2-10 19:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 44 楼』:  修正了只能手动删除文件名列表的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

2008-2-10 20:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 45 楼』:  

问一下楼主:你用这个批处理做什么呢,管理网站吗?

2008-2-10 20:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: