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

[文件操作] BAT脚本怎样批量修改文件夹内及其目录下所有文件的文件名?

[复制链接]
发表于 2023-12-28 11:25:11 | 显示全部楼层 |阅读模式
rt,新手求助
目前想按照关键字批量修改文件名,搜索之后写了如下代码,但是执行后没有反应,求助各位帮忙看看
  1. @echo off
  2. set "str1=26"
  3. set "str2=28"
  4. Setlocal Enabledelayedexpansion
  5. for /r "D:\A-相关无用文件备份\20231226\- 模板备份1228" %%j in (*) do (
  6. for /f "delims=" %%i in ('dir /b *.*') do (
  7. set "var=%%i" & ren "%%i" "!var:%str1%=%str2%! "))
  8. pause
复制代码
发表于 2023-12-28 12:41:43 | 显示全部楼层
这样行不?

  1. @echo off
  2. set "str1=26"
  3. set "str2=28"
  4. Setlocal Enabledelayedexpansion
  5. for /f "eol=/ delims=" %%i in ('dir /b "D:\A-相关无用文件备份\20231226\- 模板备份1228\*.*"') do (
  6. set "var=%%i" && ren "%%~fi" "%%dpi!var:%str1%=%str2%!")
  7. pause
复制代码
发表于 2023-12-28 14:19:29 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-12-28 14:45 编辑

下面代码保存为ANSI编码运行:
  1. @echo off
  2. set "str1=26"
  3. set "str2=28"
  4. cd /d "D:\A-相关无用文件备份\20231226\- 模板备份1228"
  5. Setlocal Enabledelayedexpansion
  6. for /f "delims=" %%i in ('dir /s /b /a-d "*%str1%*"') do (
  7. set "var=%%~nxi"
  8. ren "%%i" "!var:%str1%=%str2%!"
  9. )
复制代码
发表于 2023-12-28 17:44:51 | 显示全部楼层
回复 1# Emy


    你声明的变量是 j ,用的却是 i,这才是没有反应的最主要原因吧。

其实如果你要修改指定文件夹下的指定文件,就假定是当前目录就好了,这样你就不需要 /R 参数了。
如果单纯只是想要修改指定规则的文件,我觉得你应该要知道怎么正确匹配到你想要修改的文件。

比如你要修改所有记事本文件,小括号里就写 *.txt 。
要修改所有2023开头的图片,小括号里就写  2023*.jpg
 楼主| 发表于 2024-1-10 10:03:28 | 显示全部楼层
回复 3# qixiaobin0715

感谢解答!这个我试了下可以实现指定文件夹下所有文件的文件名关键词修改,但是不会修改文件夹下文件夹的名称,极大程度上解决了我的问题!我再研究下怎么修改文件夹名称。
 楼主| 发表于 2024-1-10 10:18:20 | 显示全部楼层
回复 2# Five66


   感谢回复! 这个我试了下可实现指定文件夹下的文件及文件夹名修改,但无法遍历文件夹,以及所有的文件夹和文件前会增加一个%dpi,删除dpi之后,所有的文件夹和文件前会增加一个%,后续怎么修改我再看看。
 楼主| 发表于 2024-1-10 10:20:08 | 显示全部楼层
回复 4# _avatar_


    我试了下统一变量为i,也没成功ORZ。另外我是想要遍历指定文件夹下的所有文件和文件夹,不指定格式地修改名称,所以用了r,想实现for的嵌套,但是出现了问题,没有效果。
发表于 2024-1-10 10:22:05 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2024-1-10 10:25 编辑

文件夹也要修改?
  1. @echo off
  2. set "str1=26"
  3. set "str2=28"
  4. cd /d "D:\A-相关无用文件备份\20231226\- 模板备份1228"
  5. Setlocal Enabledelayedexpansion
  6. for /f "delims=" %%i in ('dir /s /b "*%str1%*"^|sort /r') do (
  7. set "var=%%~nxi"
  8. ren "%%i" "!var:%str1%=%str2%!"
  9. )
复制代码
 楼主| 发表于 2024-1-10 11:20:53 | 显示全部楼层
回复 8# qixiaobin0715


    成功了!感谢解答!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 06:40 , Processed in 0.012440 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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