标题: [文件操作] [已解决]批处理如何批量修改文件夹名称 [打印本页]
作者: liaoguinan 时间: 前天 08:31 标题: [已解决]批处理如何批量修改文件夹名称
如何遍历批量修改子文件夹下的文件夹名称?
修改后面的序号,从1开始排
有数字或者字母这些的会有空格隔开
作者: qixiaobin0715 时间: 前天 09:55
本帖最后由 qixiaobin0715 于 2024-12-26 12:50 编辑
代码未经测试,写的比较匆忙,未仔细检查,你先试试或者把文件传上来测试一下:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /ad') do (
- pushd "%%i"
- set n=1000000
- setlocal enabledelayedexpansion
- for /f "delims=" %%j in ('dir /b /ad') do (
- set "FN=%%j"
- set "FN=!FN:*%%i-=!"
- set /a m=FN
- set /a m=m+n
- for /f "tokens=* delims=0123456789" %%k in ("!FN!") do set "_!m!:%%j=%%k"
- )
- set x=0
- for /f "tokens=2* delims=:=" %%a in ('set _') do (
- set /a x+=1
- ren "%%a" "%%i-!x!%%b"
- )
- endlocal
- popd
- )
- pause
复制代码
作者: aloha20200628 时间: 前天 16:47
本帖最后由 aloha20200628 于 2024-12-26 16:48 编辑
回复 1# liaoguinan
仅用0-9数字分割目录名会把其后目录名中的数字一同删除,后还须改用 call :cutHd ...- @echo off &setlocal enabledelayedexpansion
- for /f "delims=" %%D in ('dir /b/ad') do set "n=" &for /f "delims=" %%d in ('dir /b/ad "%%D"') do (
- set "d=%%d" &set "_d=!d:*%%D-=!" &set/a "n+=1" &(call :cutHd)
- ren "%cd%\%%D\%%d" "%%~nxD-!n!!_d!")
- pause&exit/b
- :cutHd
- if "!_d:~,1!" geq "0" if "!_d:~,1!" leq "9" (set "_d=!_d:~1!" &goto :cutHd)
- exit/b
复制代码
作者: liaoguinan 时间: 前天 21:05
回复 2# qixiaobin0715
代码有用
作者: qixiaobin0715 时间: 昨天 09:09
本帖最后由 qixiaobin0715 于 2024-12-27 09:35 编辑
回复 3# aloha20200628
大佬可能没明白2楼代码表达的意义,你说的问题应当不存在,实际上反而有较大的另外一个可能的bug,那就是原有序号不能是类似0123(0开头)这样的情况出现,否则可能会对重新编号的顺序有影响。
写代码时已知悉这个bug,只不过对于楼主提供的文件格式(非0开头)不会有影响。不要芝麻未得到,西瓜也丢了额。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |