中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]001,002,003式的批量重命名
作者:
标题: [原创]001,002,003式的批量重命名 上一主题 | 下一主题
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『楼 主』:  [原创]001,002,003式的批量重命名

思路1:
rem   这一版本的编辑if_exist   http://hi.baidu.com/523066680
@echo off&setlocal enabledelayedexpansion
set /a i=0,j=0,k=0
for /f "tokens=*" %%a in ('dir *.jpg /b') do (
if !k! equ 9 (set /a k=0,j+=1) else (set /a k+=1)
if !j! equ 10 (set /a j=0,i+=1)
ren %%a !i!!j!!k!.jpg >nul 2>nul
echo number!i!!j!!k!
)

思路2:
rem 这一版本的编辑if_exist   http://hi.baidu.com/523066680
@echo off&setlocal enabledelayedexpansion
set /a i=0,j=0,k=0
for /f "tokens=*" %%a in ('dir *.jpg /b') do (
set /a k+=1
if !k! equ 9 (set j=)
if !k! equ 100 (set i=)
ren %%a !i!!j!!k!.jpg >nul 2>nul
echo !i!!j!!k!
)

思路3:(速度慢 当时还不会set命令,利用重命名的性质)
rem 这一版本的编辑if_exist   http://hi.baidu.com/523066680

@echo off
ren *.jpg *.[jpg]
for %%a in (0 1 2 3 4 5 6 7 8 9) do (
for %%b in (0 1 2 3 4 5 6 7 8 9) do (
  for %%c in (0 1 2 3 4 5 6 7 8 9) do (
    color %%b%%c
    ren *.[jpg] final-%%a%%b%%c.jpg
    if not exist *.[jpg] cls &color 0b &echo OK!! &pause &exit
  )
)
)




经三楼的提醒:思路二应改为:
@echo off&setlocal enabledelayedexpansion
set /a i=0,j=0,k=0
for /f "tokens=*" %%a in ('dir *.jpg /b') do (
set /a k+=1
if !k! equ 10 (set j=)
if !k! equ 100 (set i=)
ren %%a !i!!j!!k!.jpg >nul 2>nul
echo !i!!j!!k!
)


[ Last edited by 523066680 on 2008-7-22 at 09:06 AM ]



综合型编程论坛

我的作品索引
  
2008-7-21 07:49
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 2 楼』:  本人之前写的…… 顺便发布一下

::如有不足之处(可以做到改善的) 欢迎来投诉或改正   hi.baidu.com/523066680

@echo off
mode con cols=77 lines=12
title 某批处理初学者 hi.baidu.com/523066680
color 0b

::======================================================================

echo.
echo.步骤一、在这里输入新文件名的开头 可直接回车(即命名为000 001 002)或(0 1 2)
echo.        如输入a 则会重命名为a000 a001 a002.....或 a0 a1 a2......
echo.
echo.不支持特殊符号 ^> ^< ^\ ^/ ^? ^" ^: ^| ^* 输入名字后不能输空格,该批处理不判断.
echo.
set /p no1=请输入:

::======================================================================

cls
echo.
echo.步骤二、在这里输入将被重命名文件的格式
echo.
echo.
echo.不支持特殊符号 ^> ^< ^\ ^/ ^? ^" ^: ^| ^* 空格,或是直接回车。该批处理不判断.
echo.&echo.
set /p no2=请输入:
if not exist *.%no2% (cls &echo 不存在%no2%格式的文件,请正确输入,按任意键退出 &pause>nul &exit)
if /i %no2%==bat (cls &echo 不支持重命名bat格式文件(本文件会被重命名,导致....) &pause &exit)
cls

::======================================================================

:Second
cls
echo.执行的时候显示“存在一个重名文件,或是找不到文件”请不要马上关闭,等待执行
echo.
echo.选择模式a:重命名成000 001 002,限制为999个文件(可更改)
echo.选择模式b:重命名为1 2 3 4 5 ....,限制为10000个文件(可更改)
echo.
set /p action="在此输入:"
if /i "%action%"=="a" (goto :ren1-1)
if /i "%action%"=="b" (goto :ren2-1) else (goto :second)

::======================================================================


:ren1-1
cls
ren *.%no2% *.[%no2%]

for %%a in (0 1 2 3 4 5 6 7 8 9) do (
for %%b in (0 1 2 3 4 5 6 7 8 9) do (
  for %%c in (0 1 2 3 4 5 6 7 8 9) do (
    color %%b%%c &title %%a%%b%%c.%no2%
    echo.                                 %no1%%%a%%b%%c.%no2%
    ren *.[%no2%] %no1%%%a%%b%%c.%no2%>nul 2>nul
    if not exist *.[%no2%] cls &color 0b &echo OK!! &pause &exit
  )
)
)

::=======================================================================

:ren2-1
ren *.%no2% *.[%no2%]
for /l %%a in (1,1,10000) do (
    echo.                                 %no1%%%a%no2%
    ren *.[%no2%] %no1%%%a.%no2%>nul 2>nul
    if not exist *.[%no2%] cls &color 0b &echo OK!! &pause &exit
)



综合型编程论坛

我的作品索引
  
2008-7-21 09:14
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
qianmo717
初级用户





积分 68
发帖 32
注册 2007-12-9
状态 离线
『第 3 楼』:  

思路2:
rem 这一版本的编辑if_exist   http://hi.baidu.com/523066680
@echo off&setlocal enabledelayedexpansion
set /a i=0,j=0,k=0
for /f "tokens=*" %%a in ('dir *.jpg /b') do (
set /a k+=1
if !k! equ 9 (set j=)
if !k! equ 100 (set i=)
ren %%a !i!!j!!k!.jpg >nul 2>nul
echo !i!!j!!k!
)
红色部分是否为if !k! gtr 9

   此帖被 +2 点积分      点击查看详情   
评分人:【 523066680 分数: +2  时间:2008-7-22 08:58


2008-7-22 05:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 4 楼』:  

嗯……这位大哥问的好,因为我有怀疑但却没有深入探究 说明我态度不对。
@echo off&setlocal enabledelayedexpansion
set /a i=0,j=0,k=0
for /l %%a in (1,1,30) do (
set /a k+=1
if !k! gtr 9 (set j=)
if !k! equ 100 (set i=)
ren %%a !i!!j!!k!.jpg >nul 2>nul
echo !i!!j!!k!
)
pause


答案:
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030

无误
====================my god!!!==================

谢谢哈   我发现我的思路二之处 出现了错误 给你加分 以示感谢,而且
这个帖子放了一天  只有你回帖哦  好感激

[ Last edited by 523066680 on 2008-7-22 at 09:07 AM ]



综合型编程论坛

我的作品索引
  
2008-7-22 08:54
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
luowei14
初级用户




积分 193
发帖 98
注册 2007-1-17
状态 离线
『第 5 楼』:  

鼓励原创



这家伙很聪明 什么都没留下
2008-10-2 16:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: