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

[代码合集] 求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

@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

TOP

求大佬帮我完善一下代码。还有一个+“J”的要求没有完成。

TOP

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

TOP

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

TOP

回复 5# qixiaobin0715

谢谢老师的指点。

TOP

回复 4# hfxiang


    谢谢老师的指点!

TOP

回复 5# qixiaobin0715


    最优答案!

TOP

回复 4# hfxiang


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

TOP

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

如果要同时处理目录下子文件夹中的文件,又要防止误点,可以这样
bat小白,请多指教!谢谢!

TOP

回复 10# 77七


    谢谢老师指点。

TOP

返回列表