Board logo

标题: [文件操作] BAT脚本批量替换文件和子文件夹中的文件名的部分字符 [打印本页]

作者: coolzq1980    时间: 2021-9-16 13:03     标题: BAT脚本批量替换文件和子文件夹中的文件名的部分字符

我要做一个批处理文件,可以批量替换某文件夹下面,所有文件以及子文件夹中的所有文件的文件名的部分名字(包括文件夹名的部分名字),有大佬可以帮帮吗
作者: Batcher    时间: 2021-9-16 17:11

回复 1# coolzq1980


    请举例说明实际需求
作者: coolzq1980    时间: 2021-9-16 18:57

我有2个文件夹A1,A2,(A1文件夹下面有文件A01,A02),(A2文件夹下面有文件A03,A04,A05),我要批量改名,把文件夹名称改成B1,B2,文件名改成B01,B02,B03,B04,B05,也就是把A替换成B
作者: Fit    时间: 2021-9-16 19:47

首先新建文件夹X,将A1,A2,放入X中,下面命令脚本和X在同一目录

@echo off&setlocal enabledelayedexpansion

cd X
set c=%cd%

rem 修改文件夹
for /r %%i in (.) do (
set n=%%i
set n=!n:~0,-2!
set v=!n!
set n=!n:A=B!
set x=!n:~-1,1!
set n=!n:%c%\=!
if not "!x!"=="X"  ren !v!  !n!
)
rem 修改文件文件
for /r . %%i in (*) do (
set m=%%~nxi
set m=!m:A=B!
ren %%i  !m!)

pause
作者: qixiaobin0715    时间: 2021-9-16 21:17

本帖最后由 qixiaobin0715 于 2021-9-17 14:00 编辑

回复 3# coolzq1980
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%a in (A*) do (
  4. set str=%%a
  5. ren "%%a" "B!str:~1!"
  6. ren "B!str:~1!\A*.*" "B*.*"
  7. )
  8. pause
复制代码

作者: coolzq1980    时间: 2021-9-17 13:13

回复 5# qixiaobin0715
我试了一下,双击后好像没反应
作者: qixiaobin0715    时间: 2021-9-17 13:15

回复 6# coolzq1980
要和你举的例子一样才行。
作者: coolzq1980    时间: 2021-9-17 13:55

回复 7# qixiaobin0715
是啊,我电脑上试了一下,双击这个BAT文件之后,没反应
作者: qixiaobin0715    时间: 2021-9-17 14:01

回复 8# coolzq1980
(A*)前忘记了in了,已修改。
作者: coolzq1980    时间: 2021-9-17 14:02

回复 2# Batcher

你好,帮我看一下,我需要一个替换文件名(包含文件夹名)的批处理文件,比如文件名是AAA1,替换成BBB1
作者: coolzq1980    时间: 2021-9-17 14:03

回复 9# qixiaobin0715


可以了,谢谢啊,大神
作者: coolzq1980    时间: 2021-9-17 14:05

回复 11# coolzq1980
修改A和B的参数是修改哪里啊,亲
作者: qixiaobin0715    时间: 2021-9-17 14:09

你的需求太模糊,所以只能一例一案。
作者: Batcher    时间: 2021-9-17 14:19

回复 10# coolzq1980


    涉及到字符串的操作,需要总结出完整的规律才能写出适合的代码。最好给出几个真实的名称
作者: coolzq1980    时间: 2021-9-17 14:31

回复 13# qixiaobin0715
比如,我有N个文件,N个文件夹,文件名(文件夹名)前面都是一样的,序号不一样,比如是(文件1,文件2,文件3,.......)要替换成(档案1,档案2,档案3....)
作者: Fit    时间: 2021-9-17 14:33

为什么不试试4楼的
作者: qixiaobin0715    时间: 2021-9-17 15:02

回复 15# coolzq1980
都是在泛泛的描述,你说不清楚的。在真实的文件夹中执行命令tree /f>1.txt,把1.txt中的内容发上来。
作者: coolzq1980    时间: 2021-9-17 15:21

回复 14# Batcher

比如,我有N个文件,N个文件夹,文件名(文件夹名)前面都是一样的,序号不一样,比如是(文件1,文件2,文件3,.......)要替换成(档案1,档案2,档案3....)




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