标题: [文本处理] 【已解决】批处理如何批量更改文件名? [打印本页]
作者: xushaolong2009 时间: 2009-4-11 19:54 标题: 【已解决】批处理如何批量更改文件名?
周末买了本 批处理命令在windows操作中的典型应用 一书,里面有个实例,讲的是:
利用下载软件批量下载文件时,偶尔会出现下载到本地的文件丢失了扩展名,如果一个个改,麻烦,如是就给个批处理- @echo off
- echo 开始更改文件名……
- set extension=.rar
- set /a sum=0
- for %%m in (*) do (
- if not "%%m"=="s.bat"(
- ren %%m %%m%extension%
- set /a sum=sum+1
- )
- )
- echo 文件改名完毕,一共有%sum%个文件被改名!
- pause
- set sum=
- set extension=
-
复制代码
于是自己就手动创建了个文件夹,里面尽是些没有扩展名的文件,可是把文件运行了下,窗口只是闪了下,没了。接着我做了下修改- @echo off &setlocal enabledelayedestension
- echo 开始更改文件名……
- set extension=.rar
- set /a sum=0
- for %%m in (*) do (
- if not "%%m"=="s.bat"(
- ren %%m %%m%extension%
- set /a sum=sum+1
- )
- )
- echo 文件改名完毕,一共有%sum%个文件被改名!
- pause
-
-
复制代码
还是没用
这是咋的了,心中大呼又是本没啥用的书
[ 本帖最后由 xushaolong2009 于 2009-4-11 21:29 编辑 ]
作者: Batcher 时间: 2009-4-11 20:07
- @echo off
- echo 开始更改文件名……
- set extension=.rar
- set sum=0
- for %%m in ("C:\test\batcher\*.*") do (
- ren "%%m" "%%~nxm%extension%"
- set /a sum+=1
- )
- echo 文件改名完毕,一共有%sum%个文件被改名!
- pause
复制代码
作者: 随风 时间: 2009-4-11 20:13
代码是没问题的,你犯了个错误
1、 批处理中有些空格是不能随便省略的 if not "%%m"=="s.bat" ( 半括弧前面有个空格不能省略
2、最好给文件名加上引号,以防止文件名含空格时出错
如: ren "%%m" "%%m%extension%"
3、if not "%%m"=="s.bat" 这句的意识不改批处理自身的名,如果你的批处理不是s.bat的话,有可能中途会把自身改了名导致代码出错。
作者: xushaolong2009 时间: 2009-4-11 21:04 标题: 心得
谢谢楼上的回答,原来是空格在作怪,这时才发现hero大大教程的那个 罪恶的空格 不是多余的,看来自己要学习的还有许多
5楼的大大,分析很详细,这让我想到了一个大大,非常批处理的那个清风。小声嘀咕下,是不是一个人,分格很像
2楼的调式不出来的,后来把 . 改为 * , if not "%%m"=="s.bat" ( 半括弧前面有个空格不能省略(盗用清风大大的,嘿),运行下成功了,不过连源批处理也改了。
也非常感谢4楼的大大,弱弱的说声好像调试不出来的,别生气哦!(*^__^*) 嘻嘻……
为了以后再有人犯次错误,我就把根据清风大大提示后调试正确的代码写出来,- @echo off
- echo 开始更改文件名……
- set extension=.rar
- set /a sum=0
- for %%m in (*) do (
- if not "%%m"=="s.bat" (
- ren %%m %%m%extension%
- set /a sum=sum+1
- )
- )
- echo 文件改名完毕,一共有%sum%个文件被改名!
- pause
- set sum=
- set extension=
-
-
复制代码
乘着人气在 ,在这里还有一个问题要问,就是前天的问题,合并。
把356个文件合并,一个id为tireless朋友给出了代码复制代码
调式了下,发现有用,可是昨晚在打开里面时,发现了问题,里面是杂乱无章的,也就是不是按顺序来的;如果要按顺序显示的话,有没有办法解决?!
[ 本帖最后由 xushaolong2009 于 2009-4-11 21:06 编辑 ]
作者: xushaolong2009 时间: 2009-4-11 21:28 标题: 回复 7楼 的帖子
谢谢,原来前面的那个代码没错,是我错了,看来自己以后要细心了。也谢谢tireless
作者: 随风 时间: 2009-4-11 21:35 标题: 回复 6楼 的帖子
首先请不要在一个帖里问与主题帖无关的问题,有问题请新开一帖。
.
4楼的代码为什么调试不出来,请说明具体情况。(这也是对给你帮助的人的尊重)
.
5楼的大大,分析很详细,这让我想到了一个大大,非常批处理的那个清风。小声嘀咕下,是不是一个人,分格很像
答:你认错人了。
作者: xushaolong2009 时间: 2009-4-11 23:17 标题: 回复 9楼 的帖子
真是不好意思,作为新手可能多多少少要犯些错(狡辩ing),请见谅。
不知怎么地,刚开始时,4楼的调试不出来,刚刚认真看了大大的帖子,又调试了下,成功了,可能是刚刚糊涂了,坐在电脑前差不多看了一天的批处理教程,糊涂了吧(狡辩ing)。
结果还有个小疑问,能否让四楼的代码运行后不把自己后面就后缀???
作者: Batcher 时间: 2009-4-11 23:22 标题: 回复 10楼 的帖子
两个方法:
1、不要把批处理和那些需要改名的文件放在同一个文件夹里面
2、仿照书上的方法修改4楼的代码(用if排除批处理文件自身)
作者: 随风 时间: 2009-4-11 23:25
结果还有个小疑问,能否让四楼的代码运行后不把自己后面就后缀???
真佩服 batcher 我看了半天,硬是没看懂这句话的意识。
作者: xushaolong2009 时间: 2009-4-11 23:28 标题: 回复 12楼 的帖子
嘿嘿,打错字了,是加后缀,嘿嘿。(汗……)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |