标题: [文本处理] 批处理如何批量修改文件夹中的部分名字? [打印本页]
作者: wangkuang 时间: 2020-12-2 18:08 标题: 批处理如何批量修改文件夹中的部分名字?
将总文件夹内所有的文件夹中的 第一 换成 第1 第二 换成 第2 第三 换成 第3
注意:文件夹内有多层文件夹,只修改文件夹名字中的指定文字
作者: ivor 时间: 2020-12-2 18:56
http://bcn.bathome.net/s/tool/index.html?down&key=sed
作者: wangkuang 时间: 2020-12-2 18:59
回复 2# ivor
太专业,可否直接上个代码
作者: qixiaobin0715 时间: 2020-12-2 19:18
本帖最后由 qixiaobin0715 于 2020-12-2 20:15 编辑
来个笨一点的,未测试,注意备份文件。- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /s /b /ad *第一* *第二* *第三*^|sort /+100') do (
- set str=%%~na
- set str=!str:第一=第1!
- set str=!str:第二=第2!
- set str=!str:第三=第3!
- ren "%%a" "!str!"
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2020-12-2 20:18
回复 1# wangkuang
开始考虑欠周,4楼代码修改后测试通过。
作者: lancer 时间: 2020-12-3 11:49
- @echo off
- title 批量替换文件(夹)名的部分字符串
- echo.
- echo 本批处理可批量替换文件名中部分字符串,不处理子目录
- echo.
- :AA
- set str=%~dp0
- set /p "str=输入路径(直接回车,则默认批处理所在路径):"
- cd /d "%str%"
- echo. &echo 当前路径为 %str%
- :S
- setlocal enabledelayedexpansion
- echo. & echo 当要替换的文件输入为*A这种形式,且替换为空时,会自动删除字符A以前的所有字符(包含字符A)
- echo.&set /p strtemp1= 请输入要替换的文件(文件夹)名字符串(可替换空格):
- echo.&set /p strtemp2= 请输入替换后的文件(文件夹)名字符串(删除,则直接回车):
- echo.
- echo 正在修改文件(夹)名中请稍候……
- for /f "delims=" %%i in ('dir /a /b') do (
- set "f=%%~ni" ::将变量i扩展到文件名和后缀,并赋值给f
- set "k=%%~xi"
- set "f1=!f:%strtemp1%=%strtemp2%!" ::将f中的字符串1替换成字符串2,并赋值给f1
- if not "%%i"==%0 (
- if not "!f!!k!"=="!f1!!k!" (
- if exist "!f1!!k!" (
- echo 由于!f1!!k!存在同名,!f!!k! 文件名未改 ) else ren "!f!!k!" "!f1!!k!"
- )
- )
- )
- echo.
- echo 替换完成。。。。。。
- endlocal ::结束变量延迟
- echo.
- echo ===========================================================
- echo.& echo 【1】……更换路径
- echo.& echo 【2】……继续在当前目录替换
- echo.
- set /p "xuan= 请选择【1】或【2】:"
- echo.
- if %xuan% equ 1 goto AA else(
- if %xuan% equ 2 goto S
- )
- echo.&pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |