Board logo

标题: [代码合集] 求BAT脚本批量修改文件名 [打印本页]

作者: 彭生    时间: 2023-2-1 09:56     标题: 求BAT脚本批量修改文件名

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

@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

求大佬帮我完善一下代码。还有一个+“J”的要求没有完成。
作者: hfxiang    时间: 2023-2-1 11:12

  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
复制代码

作者: qixiaobin0715    时间: 2023-2-1 11:28

像这种文件名由固定分隔符隔开的文件,重命名时,不必去计算字符数,这样很简单:
  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

回复 5# qixiaobin0715

谢谢老师的指点。
作者: 彭生    时间: 2023-2-1 14:33

回复 4# hfxiang


    谢谢老师的指点!
作者: 彭生    时间: 2023-2-1 14:44

回复 5# qixiaobin0715


    最优答案!
作者: 彭生    时间: 2023-2-1 15:00

回复 4# hfxiang


    老师你的代码很好!首先谢谢你的辛勤付出,代码执行一次能达到我想要的结果,但不足之处是,如果不注意执行了第2次,文件名又在修改,并删除了部份文件,造成数据丢失。
作者: 77七    时间: 2023-2-1 16:00

  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

回复 10# 77七


    谢谢老师指点。




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