Board logo

标题: [文件操作] 批处理如何批量给文件名添加指定后缀? [打印本页]

作者: game113    时间: 2016-1-7 10:12     标题: 批处理如何批量给文件名添加指定后缀?

我有一些文件,都放置在某文件夹下,
类似这种:
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

set file=%%i
if %%i neq !file!
/(ㄒoㄒ)/~~哭了
作者: flyinnet9    时间: 2016-1-7 10:39

  1. for /f "delims=" %%a in ('dir /a-d /b ^|findstr /i /v "sor$"') do ren "%%a" "%%a.sor"
复制代码

作者: game113    时间: 2016-1-7 10:59

谢谢 flyinnet9 了。
真是热心的高手。
作者: 依山居    时间: 2016-1-7 11:02

你需要的是ant Renamer
作者: game113    时间: 2016-1-7 11:35

回复 5# 依山居


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

但由于这个批处理不是给我用的,是给一个对电脑不熟悉的人使用的,
所以我考虑用批处理比较合适。
作者: game113    时间: 2016-1-7 11:40

备注:
由于运行这个批处理后,这个批处理文件本身也会被添加一个后缀名,
因此,我把这个批处理命名为 ”批量加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这个字符串,就不再进行修改了。

复制代码
作者: /zhqsystem/zhq    时间: 2016-1-7 12:24

if /i not "%%~xi"==".sor" if /i not "%%~nxi"=="%~nx0" echo,%%i
作者: ctgwglzc    时间: 2018-10-5 19:22

回复 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
作者: xp3000    时间: 2018-10-5 21:36

回复 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在哪就知道怎么回事了,然后可以试着删除中间两行和在*.后面修改你需要的类型
作者: tigerpower    时间: 2018-10-5 22:42

本帖最后由 tigerpower 于 2018-10-5 22:44 编辑
  1. ren ????????.???.SOR ????????.??? && ren ????????.??? ????????.???.SOR
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2