[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理批量重命名文件或者文件夹还有命名还原功能

咨询内容,以下为以前的旧版,新版请看523066680在本帖7楼的写的内容,知错能改,应该还是好孩子吧!帖子的问题已经于7.27已经完美解决,谢谢大家。(后面的跟帖为解决答案)

请帮我制作重命名批处理
功能:先询问用户是否在完成命名后选择是否生成将命名文件或目录还原的批处理及被重命名的文件或者文件夹清单(txt格式),如果用户要需输入good不要需输入I do not need,然后让用户输入文件或者文件夹存放地址{可以修改文件夹下所有文件的文件名},然后询问用户要哪种命名方式,1.给所有文件或者文件末尾加个字母s,2。可以随便命名任何后缀名的文件,并且我只要bak1~bakn就可以了,比如bak1.txt bak2.txt bak3.txt ,然后就说完成,如果之前选择在完成命名后选择生成将命名文件或目录还原的批处理,那就显示   重命名完成,还原文件已经在此软件的文件夹下,谢谢使用****作品,如果之前输入I do not need,则显示重命名完成,谢谢使用****作品(最好批处理能美化下,背景为绿色)

请大家帮帮忙

[ 本帖最后由 findjay 于 2009-7-27 07:48 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

回复 21楼 的帖子

您的态度很消极哦,我希望大家都能振作起来,共创美好的批处理之家!

TOP

回复 20楼 的帖子

呵呵,没关系,我能理解,你怎么又送我10pb,难道是礼尚往来?(偷笑ING)

TOP

回复 18楼 的帖子

并非只有管理人员才能给他人加分。不同级别的会员,给他人加分的上限也不同。具体可参考:
http://bbs.bathome.net/thread-1869-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

if_exist 最近爆冷门,  到哪儿那儿冷清。基本上这几个月论坛里愿意根if_exist 对话的也就 楼主你了~
       唉……
Press Any Key To Continue...

TOP

现在感觉欣慰多了~
昨天因为在这件事上花的时间较多,后来又要修改所以耐心消磨掉了
发了点火不好意思……

TOP

回复 16楼 的帖子

已经通过评分方式给您送去了10个pb(最多就只能送10个pb),谢谢,刷牙去了——

TOP

回复 17 楼16楼 的帖子

这位仁兄已经把我要的批处理做得很人性化了,大家赶快下载体验下吧,使用步骤为先运行parcel.bat,运行完后去运行主程序rn.bat,还原重命名的批处理为Returnx.bat,非常实用。我喜欢jay,你也喜欢jay,但我很不想看到16楼中这几个字----看在jay的份上,但这也是情有可原,毕竟这个作品有点让您劳碌伤神,我想要做就做精品一点的,不然网上的重命名批处理一大堆,根本达不到您523066680的这种高制作水准,在此为您的无私帮助行为致以深深的鞠躬(好像您看不到哦),我不是管理员不然我给您点奖励。还有要谢谢的大家的批评和指导。因为有了您的批评和指导我才能更好地走向一个好的批处理之家的优秀会员。再次谢谢批评我帮助我的每个热心的批处理之家的会员们,我会做得更好,    I firmly believe that you believe me?

[ 本帖最后由 findjay 于 2009-7-27 07:29 编辑 ]
1

评分人数

TOP

回复 15楼 的帖子

我这边执行14楼的代码没有任何错误。

请把原来的smalltool删除  保存14楼代码的时候请用这个名字 parcel.bat
再执行看看
另外,如果你说的是parcel.bat自动退出,这个parcel本身就是个包裹,分解后就是要自动退出的。

下面我上传了一个 smalltool.rar

TOP

我算是仁至义尽了,楼主可不要有下个帖子这样,我会抓狂。

说明要排版好,重点要抓好,重要细节要说明。不要等别人写得老久,又提出"新的要求"


还有,如果还有类似的请求,请自己学好,做的过程有问题再来问,不是每个人都愿意这么费力帮忙。
我第一次像尽义务一样帮到这个程度。真的要用批处理,请自己学好它。

                                                           
                                                                                                        ----看在jay的份上

[ 本帖最后由 523066680 于 2009-7-26 19:09 编辑 ]

TOP

回复 14楼 的帖子

14楼的 代码有误,运行后自动退出

TOP

按你的要求,实现了可选择多个恢复的功能

下面代码执行生成 smalltool 文件夹  里面有 rn.bat 和 Returnx.bat

执行 rn.bat 后  生成backz.cmd  
再次rn.bat的话 原来的back批处理会被加上编号,然后生成新的 backz.cmd
backz.cmd都是刚生成的。rn.bat会在back批处理首行写入时间和操作信息。
      这个时候如果要恢复,可以打开Returnx.bat  
它会列出每个back批处理对应的时间和当时选择的操作数,这个时候自己根据信息选择
一个Back文件名,输入。
      通过Returnx.bat 执行 back 操作,会对应的删除那个back文件。
      每次执行rn.bat的时候都会对back文件名做整理使其按顺序排好名字

  1. @set file="rn.bat" "Returnx.bat"
  2. @echo off
  3. for %%a in (%file%) do (call :setup %%~a)
  4. exit
  5. :setup
  6. if not exist smalltool md smalltool
  7. set "act="
  8. for /f "delims= eol=" %%a in (%~nx0) do (
  9.   if "%%a"=="::%* end" (goto :eof)
  10.   if defined act echo,%%a>>"smalltool\%*"
  11.   if "%%a"=="::%*" errcommand>"smalltool\%*" 2>nul&set act=act
  12. )
  13. ::Returnx.bat
  14. @echo off&setlocal enabledelayedexpansion
  15. for /f "tokens=*" %%a in ('dir back* /b') do (
  16.   set /p now=<%%a
  17.   echo, %%~na -- !now!
  18. )
  19. set /p cho="输入对应的还原批处理脚本名称(无需格式):"
  20. call %cho%.cmd
  21. del %cho%.cmd
  22. echo,执行完成
  23. pause
  24. ::Returnx.bat end
  25. ::rn.bat
  26. @echo off &setlocal enabledelayedexpansion
  27. title 批量重命名工具
  28. echo, &echo,  请输入将执行批量重命名操作的路径,如: F:\tempfolder\
  29. echo, &echo,  注:  输入路径不需要加双引号,由批处理做统一处理.
  30. echo,
  31. :a
  32.   set /p in="请输入操作路径:"
  33. if not exist "%in%" (echo, -输入不正确&echo, &goto :a)
  34. if not "%in:~-1%"=="\" (set in=%in%\)
  35. :b
  36.   set /p in2="请输入将要批量重命名的文件的格式(如: txt):"
  37. if not exist "%in%*.%in2%" (echo, 不存在该格式 &echo, &goto :b)
  38. :
  39. set bk=1
  40. :sortback
  41. if exist back* (set "inp=%~dp0" &set "inp2=cmd" &set "spc=back" &call :listname ::)
  42. set inp=%in%
  43. set inp2=%in2%
  44. :
  45.    echo,&echo, 1  批量把%inp% 目录下的 %inp2%文件按pak1~pakn 顺序重命名
  46.    echo,&echo, 2  批量给文件后缀加s
  47.    echo,
  48. :
  49.   :c
  50.   set /p inp3="请选择操作模式:"
  51.   echo,::%date% , %time% , %inp% 选择的操作 %inp3% >backz.cmd
  52.   if "%inp3%"=="1" (goto :listname)
  53.   if "%inp3%"=="2" (goto :adds) else (echo, -请正确输入 &goto :c)
  54. :listname
  55. if "%1"=="" (set spc=pak)
  56. set /a n=1
  57. ren "%inp%*.%inp2%" *.x_x
  58. ::上面这句ren是为了避免偶尔出现的细节上的冲突
  59. for /f "tokens=*" %%a in ('dir "%inp%*.x_x" /b') do (
  60. %1 echo,ren "%inp%%spc%!n!.%inp2%" "%%a">>backz.cmd
  61.    ren "%inp%%%a" %spc%!n!.%inp2%
  62.    set /a n+=1
  63. )
  64. %1 echo,ren "%inp%*.x_x" *.%inp2%>>backz.cmd
  65. if "%1"=="::" (goto :eof)
  66. goto :over
  67. :
  68. :adds
  69. ren "%inp%*.%inp2%" *.%inp2%s
  70. echo,ren "%inp%*.%inp2%s" *.%inp2%>>backz.cmd
  71. goto :over
  72. :
  73. :over
  74. echo,任务结束。Press any key to exit...
  75. pause>nul &exit
  76. ::rn.bat end
复制代码

[ 本帖最后由 523066680 于 2009-7-26 19:02 编辑 ]
1

评分人数

TOP

已经对出现的失误进行了修改,做个评审吧~。
改颜色的话就自己来啦……

[ 本帖最后由 523066680 于 2009-7-26 16:53 编辑 ]

TOP

楼主的这个帖子的题目要改改,类似:批量重命名和恢复操作

原题目别人一看“批处理如何重命名文件或者文件夹” ,不就是直接ren?

TOP

为了操作,批处理方式打包发上来了
执行以下批处理(在windows下适用)  将生成smalltool文件夹
然后工具rn.bat放在里面
   执行rn.bat的某个后,该文件夹生成back.bat文件,如果需要还原
操作,则双击back.bat 暂时只支持一次操作恢复。
   如果要实现多个恢复,得费些功夫了……

恢复功能暂时之回复
  1. ::打包:if_exist 打包工具http://bbs.bathome.net/viewthread.php?tid=2618
  2. @set file="rn.bat"
  3. @echo off
  4. if not exist smalltool md smalltool
  5. for %%a in (%file%) do (call :setup %%~a)
  6. exit
  7. :setup
  8. set "act="
  9. for /f "delims= eol=" %%a in (%~nx0) do (
  10.   if "%%a"=="::%* end" (goto :eof)
  11.   if defined act echo,%%a>>"smalltool\%*"
  12.   if "%%a"=="::%*" errcommand>"smalltool\%*" 2>nul&set act=act
  13. )
  14. ::rn.bat
  15. @echo off &setlocal enabledelayedexpansion
  16. title 批量重命名工具
  17. echo, &echo,  请输入将执行批量重命名操作的路径,如: F:\tempfolder\
  18. echo, &echo,  注:  输入路径不需要加双引号,由批处理做统一处理.
  19. echo,
  20. :a
  21.   set /p inp="请输入操作路径:"
  22. if not exist "%inp%" (echo, -输入不正确&echo, &goto :a)
  23. if not "%inp:~-1%"=="\" (set inp=%inp%\)
  24. :b
  25.   set /p inp2="请输入将要批量重命名的文件的格式(如: txt):"
  26. if not exist "%inp%*.%inp2%" (echo, 不存在该格式 &echo, &goto :b)
  27. :c
  28.   echo,@echo off>back.bat
  29.   echo,&echo, 1  批量把%inp% 目录下的 %inp2%文件按pak1~pakn 顺序重命名
  30.   echo,&echo, 2  批量给文件后缀加s
  31.   echo,
  32.   set /p inp3="请选择操作模式:"
  33.   if "%inp3%"=="1" (goto :listname)
  34.   if "%inp3%"=="2" (goto :adds) else (echo, -请正确输入 &goto :c)
  35. :listname
  36. set /a n=1
  37. ren "%inp%*.%inp2%" *.x_x
  38. ::上面这句ren是为了避免偶尔出现的细节上的冲突
  39. for /f "tokens=*" %%a in ('dir "%inp%*.x_x" /b') do (
  40.    echo,ren "%inp%pak!n!.%inp2%" "%%a">>back.bat
  41.    ren "%inp%%%a" pak!n!.%inp2%
  42.    set /a n+=1
  43. )
  44. echo,ren "%inp%*.x_x" *.%inp2%>>back.bat
  45. goto :over
  46. :adds
  47. ren "%inp%*.%inp2%" *.%inp2%s
  48. echo,ren "%inp%*.%inp2%s" *.%inp2%>>back.bat
  49. goto :over
  50. :over
  51. echo,任务结束。Press any key to exit...
  52. pause>nul &exit
  53. ::rn.bat end
复制代码

[ 本帖最后由 523066680 于 2009-7-26 16:46 编辑 ]

TOP

返回列表