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

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

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

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

TOP

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

TOP

回复 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

TOP

if /i not "%%~xi"==".sor" if /i not "%%~nxi"=="%~nx0" echo,%%i
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

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

复制代码

TOP

回复 5# 依山居


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

但由于这个批处理不是给我用的,是给一个对电脑不熟悉的人使用的,
所以我考虑用批处理比较合适。

TOP

你需要的是ant Renamer
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

谢谢 flyinnet9 了。
真是热心的高手。

TOP

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

TOP

set file=%%i
if %%i neq !file!
/(ㄒoㄒ)/~~哭了
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

返回列表