标题: [文件操作] 【已解决】批处理文件夹名中数字补0 [打印本页]
作者: haole 时间: 2014-6-19 19:17 标题: 【已解决】批处理文件夹名中数字补0
本帖最后由 haole 于 2014-6-20 00:16 编辑
有很多文件夹是以数字命名的,怎样才能让文件夹名中不足3位的数字补0,文件夹中有文件,希望修改文件夹名字,不修改文件名字
例1:文件夹的名字分别是1,2,3……,希望修改为001,002,003……
例2:文件夹的名字分别是1_1,1_2,1_3……,希望修改为001_001,001_002,001_003……
附上解决办法:
例1代码由提供- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /ad /b') do (
- set a=%%a
- if "!a:~1,1!"=="" (ren %%a 00%%a) else (if "!a:~2,1!"=="" ren %%a 0%%a)
- )
- pause
复制代码
例2代码由提供- @echo off & setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=_" %%a in ('dir /ad /b *_*') do (
- set /a a=%%a+1000,b=%%b+1000
- ren %%a_%%b !a:~-3!_!b:~-3!
- )
- pause
复制代码
作者: 522235677 时间: 2014-6-19 19:43
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /ad /b') do (
- set a=%%a
- if "!a:~1,1!"=="" (ren %%a 00%%a) else (if "!a:~2,1!"=="" ren %%a 0%%a)
- )
- pause
复制代码
- @echo off & setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=_" %%a in ('dir /ad /b *_*') do (
- set a=%%a
- if "!a:~1,1!"=="" (set n=00%%a) else (if "!a:~2,1!"=="" set n=0%%a)
- set a=%%b
- if "!a:~1,1!"=="" (set m=00%%a) else (if "!a:~2,1!"=="" set m=0%%a)
- ren %%a_%%b !n!_!m!
- )
- pause
复制代码
作者: haole 时间: 2014-6-19 20:11
回复 2# 522235677
非常感谢!
第一个代码测试成功!
第二个有点问题:
我测试的文件夹刚开始如下图:
[attach]7330[/attach]
运行bat文件后,结果如下图:
[attach]7331[/attach]
再追问一下,如果处理文件,代码该如何修改
作者: 522235677 时间: 2014-6-19 20:30
回复 3# haole - @echo off & setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=_" %%a in ('dir /ad /b *_*') do (
- set a=%%a
- if "!a:~1,1!"=="" (set n=00%%a) else (if "!a:~2,1!"=="" (set n=0%%a) else (set n=%%a))
- set a=%%b
- if "!a:~1,1!"=="" (set m=00%%a) else (if "!a:~2,1!"=="" (set n=0%%a) else (set m=%%a))
- ren %%a_%%b !n!_!m!
- )
- pause
复制代码
作者: Batcher 时间: 2014-6-19 20:50
dir /ad /b 是处理文件夹
dir /a-d /b 是处理文件
作者: haole 时间: 2014-6-19 20:58
回复 3# haole
刚测试了一下,好像还是不行,下面是测试结果:
[attach]7332[/attach]
作者: haole 时间: 2014-6-19 20:59
回复 5# Batcher
哦,学习了,非常感谢
作者: apang 时间: 2014-6-19 21:59
- @echo off & setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=_" %%a in ('dir /ad /b *_*') do (
- set /a a=%%a+1000,b=%%b+1000
- ren %%a_%%b !a:~-3!_!b:~-3!
- )
- pause
复制代码
作者: haole 时间: 2014-6-20 00:11
回复 8# apang
非常感谢,测试成功
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |