找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24413|回复: 5

[文件操作] [已解决]批处理如何批量更改文件名?

[复制链接]
发表于 2010-5-25 22:04:19 | 显示全部楼层 |阅读模式
我运行一个这样的代码。。。
  1. @echo off
  2. echo   现在开始更改文件名
  3. set extension=.mp3
  4. set /a sum=0
  5. for %%m in(*) do(
  6. if not "%%m"=="text.bat"(
  7. ren %%m %%m%extension%
  8. set /a sum=sum+1
  9. )
  10. )
  11. echo 文件改名完毕,一共有%sum%个文件被改名!
  12. set sum=
  13. set extension=
复制代码
但运行后就出现这样一个问题!!!!不知你们能否指定下哪里出问题了?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2010-5-25 22:11:20 | 显示全部楼层
  1. @echo off
  2. echo 现在开始更改文件名
  3. for %%m in (*) do if not "%%m"=="%~nx0" (
  4. ren "%%m" "%%~nm.mp3"
  5. set/a sum+=1
  6. )
  7. echo 文件改名完毕,一共有%sum%个文件被改名!
  8. pause
复制代码

原帖由 surboy 于 2010-5-25 22:04 发表
我运行一个这样的代码。。。

@echo off
echo   现在开始更改文件名
set extension=.mp3
set /a sum=0
for %%m in(*) do(
if not "%%m"=="text.bat"(
ren %%m %%m%extension%
set /a sum=sum+1
)
)
echo 文件改名完毕,一共有%sum%个文件被改名!
set sum=
set extension=


但运行后就出现这样一个问题!!!!不知你们能否指定下哪里出问题了

1,for %%m in(*) do( 该写成 for %%m in (*) do (
2,if not "%%m"=="text.bat"( 该写成 if not "%%m"=="text.bat" (
3,ren %%m %%m%extension% 该写成 ren %%m %%~nm%extension%

[ 本帖最后由 hanyeguxing 于 2010-5-26 00:08 编辑 ]

评分

参与人数 1PB +5 收起 理由
Batcher + 5 乐于助人

查看全部评分

 楼主| 发表于 2010-5-26 00:21:25 | 显示全部楼层

回复 2楼 的帖子

恩。。。你写的那个代码也可以执行。。。。但我有点不明白,1:是我的代码是在批处理书上一字不漏写下来的。。。但书上可以执行。。。而我却出现上面的错误。。。。
2:是 你给我指出的三点。我看来看去第一点和第二点你改写后的和我的代码都一样的,第三点为什么要多一个~n呢?
发表于 2010-5-26 00:31:42 | 显示全部楼层
不一样,
1.in(*)少了个空格,应该是in (*)
2.跟1一样,少了一个空格
3.第3个%%~nm是取%%m的文件名+extension变量来做最后的文件名,而原来的是包含了其他东西的,你看看echo %%m的输出。
比如%%m是a.jpg,那么%%m%extension%就是a.jpg%extension%。而%%~nm%extension%是a%extension%

[ 本帖最后由 sgaizxt001 于 2010-5-26 00:33 编辑 ]

评分

参与人数 1PB +5 收起 理由
Batcher + 5 乐于助人

查看全部评分

 楼主| 发表于 2010-5-26 08:16:51 | 显示全部楼层

回复 4楼 的帖子

恩。。我把你所说的再重新整理的一次:
  1. @echo off
  2. echo   现在开始更改文件名
  3. set extension=.mp3
  4. set /a sum=0
  5. for %%m in (*) do (
  6. if not "%%m"=="text.bat" (
  7. ren %%m %%~nm%extension%
  8. set /a sum=sum+1
  9. )
  10. )
  11. echo 文件改名完毕,一共有%sum%个文件被改名!
  12. set sum=
  13. set extension=
复制代码
我运行命令后显示“命令语法不正确”“命令语法不正确”。。。“文件改名完毕,一共九个文件被改名”

我检查很久了。。。还是看不错语法哪里出错了。。。。。哈,还是请各位指定下。。。
发表于 2010-5-26 08:29:28 | 显示全部楼层
ren命令的错误,文件名有特殊字符。用引号引起来就好了
ren "%%m" "%%~nm%extension%"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 09:04 , Processed in 0.021258 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表