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

[代码合集] 求BAT脚本批量修改文件名

[复制链接]
发表于 2023-2-1 09:56:53 | 显示全部楼层 |阅读模式
l批量修改文件名,(同文件夹中这样文件很多)。
要求:1.文件名前批量加"DKSYT"  ;  2.批量删除“_刘堂怀_附证附图” ; 3.批量修改扩展名小写变大写;4. 批量在扩展名前加“J”

421182103206000130_刘堂怀_附证附图.pdf
421182103206000175_刘辉沼_附证附图.pdf
421182103206000270_刘镜清_附证附图.pdf
421182103206000271_刘辉福_附证附图.pdf
421182103206000386_刘乾堂_附证附图.pdf
421182103206000399_刘堂全_附证附图.pdf

将上面文件名修改成

DKSYT421182103206000130J.PDF
DKSYT421182103206000175J.PDF
DKSYT421182103206000270J.PDF
DKSYT421182103206000271J.PDF
DKSYT421182103206000386J.PDF
DKSYT421182103206000399J.PDF
 楼主| 发表于 2023-2-1 10:47:18 | 显示全部楼层
@echo off

Setlocal Enabledelayedexpansion

set "str1=421182"

set "str2=DKSYT421182"

//将文件名前添加DKSYT字符
for /f "delims=" %%i in ('dir /b *.*') do (

set "var=%%i" & ren "%%i" "!var:%str1%=%str2%!")


@echo off
setlocal enabledelayedexpansion
set n= 23
//保留文件名前23个字符
for /f "delims=" %%a in ('dir /a-d /b *.*') do (
set "name=%%~na"
ren "%%~a" "!name:~0,%n%!%%~xa"
)

ren *.pdf *.PDF
//将扩展名pdf更改为PDF
 楼主| 发表于 2023-2-1 10:48:24 | 显示全部楼层
求大佬帮我完善一下代码。还有一个+“J”的要求没有完成。
发表于 2023-2-1 11:12:53 | 显示全部楼层

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"
  4. for /f "tokens=*" %%a in ('dir *.pdf /b/s/a-d') do (
  5.         set "name=%%~na"
  6.         set name=!name:~0,18!
  7.         move /y "%%~fa" "%%~dpaDKSYT!name!J.PDF"
  8. )
  9. endlocal
复制代码
发表于 2023-2-1 11:28:22 | 显示全部楼层
像这种文件名由固定分隔符隔开的文件,重命名时,不必去计算字符数,这样很简单:
  1. @echo off
  2. for /f "tokens=1* delims=_" %%a in ('dir /b /a-d *.pdf') do (
  3.     ren "%%a_%%b" "DKSYT%%aJ.PDF"
  4. )
  5. pause
复制代码
 楼主| 发表于 2023-2-1 14:32:48 | 显示全部楼层
回复 5# qixiaobin0715

谢谢老师的指点。
 楼主| 发表于 2023-2-1 14:33:35 | 显示全部楼层
回复 4# hfxiang


    谢谢老师的指点!
 楼主| 发表于 2023-2-1 14:44:23 | 显示全部楼层
回复 5# qixiaobin0715


    最优答案!
 楼主| 发表于 2023-2-1 15:00:33 | 显示全部楼层
回复 4# hfxiang


    老师你的代码很好!首先谢谢你的辛勤付出,代码执行一次能达到我想要的结果,但不足之处是,如果不注意执行了第2次,文件名又在修改,并删除了部份文件,造成数据丢失。
发表于 2023-2-1 16:00:40 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d *_*_*.pdf') do (
  3.         for /f "tokens=1 delims=_" %%a in ("%%~nxi") do (
  4.                 ren "%%i" "DKSYT%%aJ.PDF"
  5.         )
  6. )
  7. pause
复制代码

如果要同时处理目录下子文件夹中的文件,又要防止误点,可以这样
 楼主| 发表于 2023-2-1 16:14:09 | 显示全部楼层
回复 10# 77七


    谢谢老师指点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 05:13 , Processed in 0.019894 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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