[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理文件夹名中数字补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代码由
522235677
提供
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /ad /b') do (
  3.         set a=%%a
  4.         if "!a:~1,1!"=="" (ren %%a 00%%a) else (if "!a:~2,1!"=="" ren %%a 0%%a)
  5. )
  6. pause
复制代码
例2代码由
apang
提供
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims=_" %%a in ('dir /ad /b *_*') do (
  3.         set /a a=%%a+1000,b=%%b+1000
  4.         ren %%a_%%b !a:~-3!_!b:~-3!
  5. )
  6. pause
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 8# apang


非常感谢,测试成功

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims=_" %%a in ('dir /ad /b *_*') do (
  3.         set /a a=%%a+1000,b=%%b+1000
  4.         ren %%a_%%b !a:~-3!_!b:~-3!
  5. )
  6. pause
复制代码
1

评分人数

TOP

回复 5# Batcher

哦,学习了,非常感谢

TOP

回复 3# haole

刚测试了一下,好像还是不行,下面是测试结果:
[attach]7332[/attach]

TOP

dir /ad /b 是处理文件夹
dir /a-d /b 是处理文件
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# haole
  1.     @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims=_" %%a in ('dir /ad /b *_*') do (
  3.         set a=%%a
  4.         if "!a:~1,1!"=="" (set n=00%%a) else (if "!a:~2,1!"=="" (set n=0%%a) else (set n=%%a))
  5.         set a=%%b
  6.         if "!a:~1,1!"=="" (set m=00%%a) else (if "!a:~2,1!"=="" (set n=0%%a) else (set m=%%a))
  7.         ren %%a_%%b !n!_!m!
  8. )
  9. pause
复制代码

TOP

回复 2# 522235677

非常感谢!
第一个代码测试成功!

第二个有点问题:

我测试的文件夹刚开始如下图:
[attach]7330[/attach]

运行bat文件后,结果如下图:
[attach]7331[/attach]

再追问一下,如果处理文件,代码该如何修改

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /ad /b') do (
  3. set a=%%a
  4. if "!a:~1,1!"=="" (ren %%a 00%%a) else (if "!a:~2,1!"=="" ren %%a 0%%a)
  5. )
  6. pause
复制代码
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims=_" %%a in ('dir /ad /b *_*') do (
  3. set a=%%a
  4. if "!a:~1,1!"=="" (set n=00%%a) else (if "!a:~2,1!"=="" set n=0%%a)
  5. set a=%%b
  6. if "!a:~1,1!"=="" (set m=00%%a) else (if "!a:~2,1!"=="" set m=0%%a)
  7. ren %%a_%%b !n!_!m!
  8. )
  9. pause
复制代码
1

评分人数

TOP

返回列表