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

[文件操作] 批处理如何批量给文件名添加指定后缀?

[复制链接]
发表于 2016-1-7 10:12:21 | 显示全部楼层 |阅读模式
我有一些文件,都放置在某文件夹下,
类似这种:
LF-WD24D.024
YM-YR36D.001
YM-YR36D.002
YM-YR36D.003
CX-MD8D.007
CX-SB36D.010
数量很多,大约有几百个。

现在我想批量给这些文件名增加一个后缀名:SOR
LF-WD24D.024.SOR
YM-YR36D.001.SOR
YM-YR36D.002.SOR
YM-YR36D.003.SOR
CX-MD8D.007.SOR
CX-SB36D.010.SOR

我已经编写一个简单的批处理,但有2个问题:
一、有些文件名没有修改
二、有些文件会增加2个后缀名,如 SB-YM36D.022.SOR.SOR

我的想法是修改时判断文件名,如果已经有 SOR 后缀,则不进行处理。
处理完成后再进行一次核对,没有修改成功的再进行一次处理。

请帮我优化下我的代码,先谢谢大家了。
  1. @echo off & setlocal enabledelayedexpansion

  2. Rem 启用延迟变量扩展
  3. echo 当前目录是:%cd%  
  4. pause

  5. echo 更改当前目录下的文件加后缀名SOR

  6. for /r %cd% %%i in (*) do (
  7. set file=%%i
  8. if %%i neq !file! (move "%%i" "%%i.SOR")
  9. )

  10. echo.
  11. echo 改名完成!

  12. echo 按任意键退出。
  13. pause
复制代码
发表于 2016-1-7 10:26:59 | 显示全部楼层
set file=%%i
if %%i neq !file!
/(ㄒoㄒ)/~~哭了
发表于 2016-1-7 10:39:57 | 显示全部楼层
  1. for /f "delims=" %%a in ('dir /a-d /b ^|findstr /i /v "sor$"') do ren "%%a" "%%a.sor"
复制代码
 楼主| 发表于 2016-1-7 10:59:13 | 显示全部楼层
谢谢 flyinnet9 了。
真是热心的高手。
发表于 2016-1-7 11:02:21 | 显示全部楼层
你需要的是ant Renamer
 楼主| 发表于 2016-1-7 11:35:03 | 显示全部楼层
回复 5# 依山居


谢谢,
我使用了,这个软件不错。

但由于这个批处理不是给我用的,是给一个对电脑不熟悉的人使用的,
所以我考虑用批处理比较合适。
 楼主| 发表于 2016-1-7 11:40:59 | 显示全部楼层
备注:
由于运行这个批处理后,这个批处理文件本身也会被添加一个后缀名,
因此,我把这个批处理命名为 ”批量加sor后缀名.bat“,里面有sor这个字符串。
并将
for /f "delims=" %%a in ('dir /a-d /b ^|findstr /i /v "sor$"') do ren "%%a" "%%a.sor"
改为
for /f "delims=" %%a in ('dir /a-d /b ^|findstr /i /v "sor"') do ren "%%a" "%%a.sor"
主要是去掉了sor$这个表达式中的$,这个$表示文件名最后的3个字符是sor
我的代码意思是只要文件名中有sor这个字符串,就不再进行修改了。

复制代码
发表于 2016-1-7 12:24:56 | 显示全部楼层
if /i not "%%~xi"==".sor" if /i not "%%~nxi"=="%~nx0" echo,%%i
发表于 2018-10-5 19:22:10 | 显示全部楼层
回复 3# flyinnet9

请问,如果想给固定后缀的文件,统一改一个文件名后缀(非扩展名),怎么做?
比如
001.rar
abc103.rar
somebod.rar
tasp.rar
55252.rar
统一加个_P的后缀改成
001_P.rar
abc103_P.rar
somebod_P.rar
tasp_P.rar
55252_P.rar
发表于 2018-10-5 21:36:44 | 显示全部楼层
回复 10# ctgwglzc


    这个论坛很容易就搜索到
  1. @echo off

  2. echo 请输入类型并回车:
  3. set /p file=

  4. for /f "delims=" %%i in ('dir /b *.%file%') do (
  5. ren "%%i" "%%~ni_P%%~xi"
  6. )
复制代码
看看_P在哪就知道怎么回事了,然后可以试着删除中间两行和在*.后面修改你需要的类型
发表于 2018-10-5 22:42:04 | 显示全部楼层
本帖最后由 tigerpower 于 2018-10-5 22:44 编辑
  1. ren ????????.???.SOR ????????.??? && ren ????????.??? ????????.???.SOR
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 21:10 , Processed in 0.019904 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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