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

[文件操作] [已解决]批处理怎样批量命名一个文件夹下的多个文件夹下的图片的名字?

命名的规则是把tif格式的图片的名字改位8位数,也就是说原先的000001.tif改为00000001.tif(位数不足的前面补“0”)
cov001.tif  固定改为10000001.tif

bok001.tif  改为20000001.tif
条件可以是:bok开头的替换为20000

fow001.tif  改为30000001.tif
条件可以是:fow开头的替换为30000

!00001.tif  叹号开头的改为3开头的8位数
条件可以是:!开头的替换为400

000001.tif  改为5000001.tif
条件可以是:0开头的替换为500

leg001.tif  改为60000001.tif
条件可以是:leg开头的替换为600000

cov002.tif  固定改为70000002.tif


附加说明:!00001.tif  bok001.tif   fow001.tif     000001.tif   leg001.tif 不排除这些文件名的后面的实际数字为两位数或三位数  但是总位数不变(可以按文件名的首位判断应该改为什么样的文件名。这样的话就算我重复操作BAT文件也不会造成文件名的累加增位)



我的路径是:E:\王小明\09019491\otiff\000001.tif(图片数量不等)、E:\王小明\09019492\otiff\000001.tif(图片数量不等)、E:\王小明\09019493\otiff\000001.tif(图片数量不等)以此类推
路径的规律是:E:\王小明  不变     
E:\王小明\09019491  这个数字文件夹名字是变化的(位数不会变)
E:\王小明\09019491\otiff   这个后面的“otiff”是不变的
E:\王小明\09019491\otiff\000001.tif   最后面的图片文件名就是要命名的  也就是加位数(6位数改成8位数)
谢谢大家  呵呵
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2
非常好的论坛

本帖最后由 hanyeguxing 于 2011-8-15 13:52 编辑

文件名规则都是数字或字母+数字?最恨统计字符串长度......
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

文件名规则都是数字或字母+数字?最恨统计字符串长度......
hanyeguxing 发表于 2011-8-15 13:35



    不用统计呀  这些名字全部是有固定规律的  实际上只要“00”替换为“0000”就OK 呵呵
非常好的论坛

TOP

文件名只有这5个?
  改之前      改之后
000001.tif  00000001.tif
bok001.tif  bok00001.tif
cov001.tif   cov00001.tif
fow001.tif  fow00001.tif
leg001.tif   leg00001.tif
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

文件名只有这5个?
  改之前      改之后
000001.tif  00000001.tif
bok001.tif  bok00001.tif
cov001. ...
hanyeguxing 发表于 2011-8-15 14:04

是的  没有其他种类  只有5种
非常好的论坛

TOP

一个文件夹就是一本书  包含封面、封底、版权页、目录、前言或说明、正文
非常好的论坛

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set ""000001.tif"=00000001.tif"
  3. set ""bok001.tif"=bok00001.tif"
  4. set ""cov001.tif"=cov00001.tif"
  5. set ""fow001.tif"=fow00001.tif"
  6. set ""leg001.tif"=leg00001.tif"
  7. for /f "delims=" %%a in ('dir /s/b/a-d "E:\王小明\*.tif"') do if defined "%%~nxa" ren "%%a" "!"%%~nxa"!"
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 001011 于 2011-8-15 14:32 编辑

谢谢版主  但是 我要改的文件不是只有5个  而是批量的呀  也就是说000001.tif  会有000002.tif  000003.tif或是001111.tif
bok001.tif  cov001.tif   fow001.tif  leg001.tif  这些也一样
我把几个文件传到了115网盘  请您实验一下  呵呵  谢谢
非常好的论坛

TOP

非常好的论坛

TOP

非常好的论坛

TOP

是的  没有其他种类  只有5种
001011 发表于 2011-8-15 14:06

五种  不是五个
非常好的论坛

TOP

我感觉思路这样比较简单:凡是E:\王小明下的.TIF后缀的文件 文件名带有“00”转换为“0000”  这样是否简单些呢  呵呵
非常好的论坛

TOP

本帖最后由 hanyeguxing 于 2011-8-15 15:08 编辑

回复 12# 001011
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /s/b/a-d "E:\王小明\*.tif"') do (
  3.     set "a=%%~nxa"&set "b=!a:0000=00!"&set "c=!a:00=0000!"
  4.     if "!a!"=="!b!" ren "%%a" "!c!"
  5. )
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

谢谢版主老大  有四个“0”的话 位数就多啦  呵呵
非常好的论坛

TOP

根据老大的原始脚本改了一下  OK了  谢谢呀
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /s/b/a-d "E:\王小明\*.tif"') do (
    set "a=%%~nxa"&set "b=!a:000=A!"
    if /i "!b!" neq "!a!" ren "%%a" "!b!"
)
for /f "delims=" %%a in ('dir /s/b/a-d "E:\王小明\*.tif"') do (
    set "a=%%~nxa"&set "b=!a:A=00000!"
    if /i "!b!" neq "!a!" ren "%%a" "!b!"
)
for /f "delims=" %%a in ('dir /s/b/a-d "E:\王小明\*.tif"') do (
    set "a=%%~nxa"&set "b=!a:bok=bok00!"
    if /i "!b!" neq "!a!" ren "%%a" "!b!"
)
for /f "delims=" %%a in ('dir /s/b/a-d "E:\王小明\*.tif"') do (
    set "a=%%~nxa"&set "b=!a:cov=cov00!"
    if /i "!b!" neq "!a!" ren "%%a" "!b!"
)
for /f "delims=" %%a in ('dir /s/b/a-d "E:\王小明\*.tif"') do (
    set "a=%%~nxa"&set "b=!a:fow=fow00!"
    if /i "!b!" neq "!a!" ren "%%a" "!b!"
)
for /f "delims=" %%a in ('dir /s/b/a-d "E:\王小明\*.tif"') do (
    set "a=%%~nxa"&set "b=!a:leg=leg00!"
    if /i "!b!" neq "!a!" ren "%%a" "!b!"
)
非常好的论坛

TOP

返回列表