zoukankan      html  css  js  c++  java
  • windows 批处理-重命名

    从数字1递增批量重命名ren.bat: 

    @echo off 
    SETLOCAL ENABLEDELAYEDEXPANSION 
    set /A num=0 
    FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do ( 
         IF NOT "%%i"=="%~n0%~x0" ( 
             set /A num+=1 
             ren "%%i" "!num!%%~xi" 
         ) 
    ) 
    ENDLOCAL 
    exit 


    按00001这类格式递增批量重命名ren.bat: 

    @echo off 
    SETLOCAL ENABLEDELAYEDEXPANSION 
    set /A num=0 
    FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do ( 
         IF NOT "%%i"=="%~n0%~x0" ( 
             set /A num+=1 
             if !num! LSS 10 ( 
                 ren "%%i" 0000!num!%%~xi 
             ) ELSE ( 
                 if !num! LSS 100 ( 
                     ren "%%i" 000!num!%%~xi 
                 ) ELSE ( 
                     if !num! LSS 1000 ( 
                         ren "%%i" 00!num!%%~xi 
                     ) ELSE ( 
                         if !num! LSS 10000 ren "%%i" 0!num!%%~xi 
                     ) 
                 ) 
             ) 
         ) 
    ) 
    ENDLOCAL 
    exit 


    如果觉得0多了,可以用下面的批处理来去掉,默认是去1个,要去多少个就把!name:~1!中的数字1改成要去的个数,改这个批处理要比改前面的批处理方便一些,所以写了这个用: 

    @echo off 
    SETLOCAL ENABLEDELAYEDEXPANSION 
    set name= 
    FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do ( 
         IF NOT "%%i"=="%~n0%~x0" ( 
             set name=%%i 
             set name=!name:~1! 
             ren "%%i" "!name!" 
         ) 
    ) 
    ENDLOCAL 
    exit 

    上面的批处理要和文件放在一个目录里,命名后删除批处理文件即可。 
      
    直接使用dir的话,缺点是重命名的时候把批处理本身及子文件夹也改名了,而且 
    所得文件名字不能连续排序(批处理文件可能占了中间某个序号),因此用dir参 
    数进行排除文件夹内的子文件夹以及排序(排序目的就是把批处理排到最后)。 
      
    还有就是重名现象不好解决,如果原来已经含有一个重命名后可能会出现的名称, 
    名称被占用了程序就不能继续运行。可以事先用系统的重命名功能命名一次,方 
    法是选择要重命名的所有文件,Ctrl+a或者选择第一个再按住Shift不放,再选最 
    后一个进行连续选择,右键点击其中一个文件,选择重命名,然后随便写一个名 
    字,你将看到系统的批量命名是以括号内数字递增的。 
      
      
    排序参数的说明: 
    下面这行 
    FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do ( 
    中的/OD参数是按时间排序,使用的时候把批处理文件复制到文件夹里,那么批处 
    理文件的创建时间就是最后的了,解决了文件连续的问题。 
      
    如果用/O-E也可以,这样也能使批处理文件排在最后(扩展名是bat,b的优先级高, 
    用-号来颠倒顺序)。 
      
    /OD后再加/TC更准确些。 
      
    dir中/O和/T参数的说明: 
    /O           用分类顺序列出文件。 
    sortorder    N  按名称(字母顺序)     S  按大小(从小到大) 
                  E  按扩展名(字母顺序)   D  按日期/时间(从先到后) 
                  G  组目录优先           -  颠倒顺序的前缀 

    /T           控制显示或用来分类的时间字符域。 
    timefield    C  创建时间 
                  A  上次访问时间 
                  W  上次写入的时间 
      
    for会自动去掉空行的,所以参数肯定不为空。

    参考:

    http://www.newsmth.net/nForum/#!article/DOS/17370

    log.csdn.net/liujishen/article/details/4490859

    http://www.cnblogs.com/shiney/archive/2011/07/04/2097236.html

  • 相关阅读:
    Nginx、PCRE和中文URL(UTF8编码)rewrite路径重写匹配问题
    Nginx 使用中文URL,中文目录路径
    再谈Nginx Rewrite, 中文URL和其它
    事务管理
    commons-dbcp连接池的使用
    JDBC操作简单实用了IOUtils
    JDBC进行处理大文件和批处理
    mysql日期函数(转)
    mysql约束(自己原先总结的有点不准)
    mysql笔记(前面自己写的不标准有些地方)
  • 原文地址:https://www.cnblogs.com/ccdc/p/3353175.html
Copyright © 2011-2022 走看看