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

[文本处理] 【已解决】批处理如何批量更改文件名?

周末买了本  批处理命令在windows操作中的典型应用 一书,里面有个实例,讲的是:
  利用下载软件批量下载文件时,偶尔会出现下载到本地的文件丢失了扩展名,如果一个个改,麻烦,如是就给个批处理
  1.   @echo off
  2.    echo    开始更改文件名……
  3.   set extension=.rar
  4.   set /a sum=0
  5.   for %%m in (*) do (
  6.   if not "%%m"=="s.bat"(
  7.   ren %%m %%m%extension%
  8.   set /a sum=sum+1
  9.   )
  10.   )
  11.   echo 文件改名完毕,一共有%sum%个文件被改名!
  12. pause
  13. set sum=
  14. set extension=
  15.   
复制代码
于是自己就手动创建了个文件夹,里面尽是些没有扩展名的文件,可是把文件运行了下,窗口只是闪了下,没了。接着我做了下修改
  1.   @echo off &setlocal enabledelayedestension
  2. echo    开始更改文件名……
  3.   set extension=.rar  
  4.   set /a sum=0
  5.   for %%m in (*) do (
  6.   if not "%%m"=="s.bat"(
  7.   ren %%m %%m%extension%
  8.   set /a sum=sum+1
  9.   )
  10.   )
  11.   echo 文件改名完毕,一共有%sum%个文件被改名!
  12. pause
  13.   
复制代码
还是没用
这是咋的了,心中大呼又是本没啥用的书

[ 本帖最后由 xushaolong2009 于 2009-4-11 21:29 编辑 ]
1

评分人数

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

  1. @echo off
  2. echo 开始更改文件名……
  3. set extension=.rar
  4. set sum=0
  5. for %%m in ("C:\test\batcher\*.*") do (
  6.   ren "%%m" "%%~nxm%extension%"
  7.   set /a sum+=1
  8. )
  9. echo 文件改名完毕,一共有%sum%个文件被改名!
  10. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

代码是没问题的,你犯了个错误
1、 批处理中有些空格是不能随便省略的 if not "%%m"=="s.bat" (    半括弧前面有个空格不能省略
2、最好给文件名加上引号,以防止文件名含空格时出错
   如: ren "%%m" "%%m%extension%"
3、if not "%%m"=="s.bat" 这句的意识不改批处理自身的名,如果你的批处理不是s.bat的话,有可能中途会把自身改了名导致代码出错。
1

评分人数

技术问题请到论坛发帖求助!

TOP

心得

谢谢楼上的回答,原来是空格在作怪,这时才发现hero大大教程的那个 罪恶的空格 不是多余的,看来自己要学习的还有许多
5楼的大大,分析很详细,这让我想到了一个大大,非常批处理的那个清风。小声嘀咕下,是不是一个人,分格很像
2楼的调式不出来的,后来把 . 改为 * , if not "%%m"=="s.bat" (    半括弧前面有个空格不能省略(盗用清风大大的,嘿),运行下成功了,不过连源批处理也改了。
也非常感谢4楼的大大,弱弱的说声好像调试不出来的,别生气哦!(*^__^*) 嘻嘻……
  为了以后再有人犯次错误,我就把根据清风大大提示后调试正确的代码写出来,
  1. @echo off
  2.    echo    开始更改文件名……
  3.   set extension=.rar
  4.   set /a sum=0
  5.   for %%m in (*) do (
  6.   if not "%%m"=="s.bat" (
  7.   ren %%m %%m%extension%
  8.   set /a sum=sum+1
  9.   )
  10.   )
  11.   echo 文件改名完毕,一共有%sum%个文件被改名!
  12. pause
  13. set sum=
  14. set extension=
  15.   
复制代码
乘着人气在 ,在这里还有一个问题要问,就是前天的问题,合并。
把356个文件合并,一个id为tireless朋友给出了代码
  1. copy *.txt all.txt /b
复制代码
调式了下,发现有用,可是昨晚在打开里面时,发现了问题,里面是杂乱无章的,也就是不是按顺序来的;如果要按顺序显示的话,有没有办法解决?!

[ 本帖最后由 xushaolong2009 于 2009-4-11 21:06 编辑 ]

TOP

回复 7楼 的帖子

谢谢,原来前面的那个代码没错,是我错了,看来自己以后要细心了。也谢谢tireless

TOP

回复 6楼 的帖子

首先请不要在一个帖里问与主题帖无关的问题,有问题请新开一帖。
.
4楼的代码为什么调试不出来,请说明具体情况。(这也是对给你帮助的人的尊重)
.
5楼的大大,分析很详细,这让我想到了一个大大,非常批处理的那个清风。小声嘀咕下,是不是一个人,分格很像

答:你认错人了。
技术问题请到论坛发帖求助!

TOP

回复 9楼 的帖子

真是不好意思,作为新手可能多多少少要犯些错(狡辩ing),请见谅。
不知怎么地,刚开始时,4楼的调试不出来,刚刚认真看了大大的帖子,又调试了下,成功了,可能是刚刚糊涂了,坐在电脑前差不多看了一天的批处理教程,糊涂了吧(狡辩ing)。
结果还有个小疑问,能否让四楼的代码运行后不把自己后面就后缀???

TOP

回复 10楼 的帖子

两个方法:
1、不要把批处理和那些需要改名的文件放在同一个文件夹里面
2、仿照书上的方法修改4楼的代码(用if排除批处理文件自身)
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

结果还有个小疑问,能否让四楼的代码运行后不把自己后面就后缀???
真佩服 batcher 我看了半天,硬是没看懂这句话的意识。
技术问题请到论坛发帖求助!

TOP

回复 12楼 的帖子

嘿嘿,打错字了,是加后缀,嘿嘿。(汗……)

TOP

返回列表