找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 36403|回复: 8

[文件操作] 【已解决】批处理文件夹名中数字补0

[复制链接]
发表于 2014-6-19 19:17:58 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-6-19 19:43:56 | 显示全部楼层
  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-6-19 20:11:29 | 显示全部楼层
回复 2# 522235677

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

第二个有点问题:

我测试的文件夹刚开始如下图:


运行bat文件后,结果如下图:


再追问一下,如果处理文件,代码该如何修改
发表于 2014-6-19 20:30:36 | 显示全部楼层
回复 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
复制代码
发表于 2014-6-19 20:50:42 | 显示全部楼层
dir /ad /b 是处理文件夹
dir /a-d /b 是处理文件
 楼主| 发表于 2014-6-19 20:58:52 | 显示全部楼层
回复 3# haole

刚测试了一下,好像还是不行,下面是测试结果:
 楼主| 发表于 2014-6-19 20:59:40 | 显示全部楼层
回复 5# Batcher

哦,学习了,非常感谢
发表于 2014-6-19 21:59:21 | 显示全部楼层
  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-6-20 00:11:39 | 显示全部楼层
回复 8# apang


非常感谢,测试成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 05:25 , Processed in 0.022180 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表