zoukankan      html  css  js  c++  java
  • 批处理系列(7)

    结合本系列文章第一篇,看本文。

    利用批处理对文件名进行操作。

    操作文件前应当对原文件有备份,因为Windows系统对文件名排序这块是02在1之后。

    @echo off
    @REM @Author: xianghongai@gmail.com
    @REM @Date:   2012-02-06
    mode con cols=100 lines=38
    color 02
    title 文件名操作  by:小可(xianghongai@gmail.com)
    SETLOCAL ENABLEDELAYEDEXPANSION
    
    :GTBegin
    cls
    @echo 文件名操作  [前后缀、序数、替换、删除]
    @echo --------------------------------------------
    @echo 所有操作按回车键 (Enter) 继续
    @echo --------------------------------------------
    set /p HandleDir=拖一个需处理的文件夹进来:
    
    :GTCONTINUE
    cls
    @echo 文件名操作
    @echo --------------------------------------------
    @echo 处理的目录:%HandleDir%
    @echo.
    @echo -----------------1.加前缀-----------------
    @echo   11 - 当前目录:目录名-文件名
    @echo   12 - 层级子目录:子目录名-文件名
    @echo   13 - 当前目录:前缀字符-文件名
    @echo   14 - 层级子目录:前缀字符-文件名
    @echo -----------------2.加后缀-----------------
    @echo   21 - 当前目录:文件名-目录名
    @echo   22 - 层级子目录:文件名-子目录名
    @echo   23 - 当前目录:文件名-后缀字符
    @echo   24 - 层级子目录:文件名-后缀字符
    @echo -----------------3.加序数-----------------
    @echo   31 - 当前目录:序数
    @echo   32 - 层级子目录:序数
    @echo   33 - 当前目录:文件名-序数
    @echo   34 - 层级子目录:文件名-序数
    @echo   35 - 当前目录:目录名-序数
    @echo   36 - 层级子目录:子目录名-序数
    @echo   37 - 当前目录:字符-序数
    @echo -------------31.加序数(零占位)-------------
    @echo   311 - 当前目录:目录名-两位序数
    @echo   312 - 层级子目录:子目录名-两位序数
    @echo   313 - 当前目录:字符-两位序数
    @echo   314 - 当前目录:目录名-三位序数
    @echo   315 - 层级子目录:子目录名-三位序数
    @echo   316 - 当前目录:字符-三位序数
    @echo ----------------4.替换删除----------------
    @echo   41 - 替换当前目录下文件名
    @echo   42 - 替换所有子层级中的文件名
    @echo   43 - 删除当前目录下文件名
    @echo   44 - 删除所有子层级中的文件名
    @echo -------------------其它-------------------
    @echo   8 - 重新选择目录
    @echo   9 - 退出
    @echo.
    set  GTOperator=9
    set /p GTOperator="选择操作数后: "
    @echo.
    
    if %GTOperator% equ 11 goto GTDIRPREFIX
    if %GTOperator% equ 12 goto GTSUBDIRPREFIX
    if %GTOperator% equ 13 goto GTDIRPREFIXCUSTOM
    if %GTOperator% equ 14 goto GTSUBDIRPREFIXCUSTOM
    
    if %GTOperator% equ 21 goto GTDIRSUFFIX
    if %GTOperator% equ 22 goto GTSUBDIRSUFFIX
    if %GTOperator% equ 23 goto GTDIRSUFFIXCUSTOM
    if %GTOperator% equ 24 goto GTSUBDIRSUFFIXCUSTOM
    
    if %GTOperator% equ 31 goto GTDIRORDINAL
    if %GTOperator% equ 32 goto GTSUBDIRORDINAL
    if %GTOperator% equ 33 goto GTDIRFLIENAMEORDINAL
    if %GTOperator% equ 34 goto GTSUBDIRFILENAMEORDINAL
    if %GTOperator% equ 35 goto GTDIRNAMEORDINAL
    if %GTOperator% equ 36 goto GTSUBDIRNAMEORDINAL
    if %GTOperator% equ 37 goto GTDIRCUSTOMNAMEORDINAL
    
    if %GTOperator% equ 311 goto GTDIRNAMEORDINALOO
    if %GTOperator% equ 312 goto GTSUBDIRNAMEORDINALOO
    if %GTOperator% equ 313 goto GTDIRCUSTOMNAMEORDINALOO
    if %GTOperator% equ 314 goto GTDIRNAMEORDINALOOO
    if %GTOperator% equ 315 goto GTSUBDIRNAMEORDINALOOO
    if %GTOperator% equ 316 goto GTDIRCUSTOMNAMEORDINALOOO
    
    if %GTOperator% equ 41 goto GTDIRREPLACE
    if %GTOperator% equ 42 goto GTSUBDIRREPLACE
    if %GTOperator% equ 43 goto GTDIRDEL
    if %GTOperator% equ 44 goto GTSUBDIRDEL
    
    if %GTOperator% equ 8 goto GTBegin
    if %GTOperator% equ 9 goto GTExit
    
    echo 请选择正确的操作数
    pause >nul
    goto GTCONTINUE
    
    rem @echo 不能做文件名称的字符
    rem @echo  / : * ? " < > |
    
    rem 11.当前目录:目录名-文件名
    :GTDIRPREFIX
    cd /d "!HandleDir!"
    for /f "delims=" %%i in ("%cd%") do set "DirNamePrefix=%%~nxi"
    for /f "delims=" %%i in ('dir /a-d /b *.* 2^>nul') do (
    	if not "%~nx0"=="%%i" (
    		ren "%%i" "%DirNamePrefix%-%%~nxi"
    	)
    )
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 12.子目录:子目录名-文件名
    :GTSUBDIRPREFIX
    cd /d "!HandleDir!"
    rem for /r %%a in (*.*) do (for %%b in ("%%a..") do (ren "%%a" "%%~nxb-%%~nxa"))
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /a-d /b "%%i*.*" 2^>nul`) do (
    		ren "%%i\%%j" "%%~nxi-%%~nxj"	)	)
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 13.当前目录:前缀字符-文件名
    :GTDIRPREFIXCUSTOM
    set FilePrefix=""
    set /p FilePrefix="前缀字符:"
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /a-d/b`) do (
    if not "%%i"==%0 ren "%%i" "%FilePrefix%%%~nxi")
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 14.子目录:前缀字符-文件名
    :GTSUBDIRPREFIXCUSTOM
    set SubFilePrefix=""
    set /p SubFilePrefix="前缀字符:"
    cd /d "!HandleDir!"
    rem for /f "usebackq delims=" %%i in (`dir /a-d/b/s`) do (if not "%%i"==%0 ren "%%i" "%SubFilePrefix%%%~nxi")
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /a-d /b "%%i*.*" 2^>nul`) do (
    		ren "%%i\%%j" "!SubFilePrefix!%%~nxj"))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 21.当前目录:文件名-目录名
    :GTDIRSUFFIX
    cd /d "!HandleDir!"
    for /f "delims=" %%i in ("%cd%") do set "DirNameSuffix=%%~nxi"
    for /f "delims=" %%i in ('dir /a-d /b *.* 2^>nul') do (
    	if not "%~nx0"=="%%i" (
    		ren "%%i" "%%~ni-%DirNameSuffix%%%~xi"
    	)
    )
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 22.子目录:文件名-子目录名
    :GTSUBDIRSUFFIX
    cd /d "!HandleDir!"
    rem for /r %%a in (*.*) do (for %%b in ("%%a..") do (ren "%%a" "%%~na-%%~nxb%%~xa"))
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /a-d /b "%%i*.*" 2^>nul`) do (
    		ren "%%i\%%j" "%%~nj-%%~nxi%%~xj"	)	)
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 23.当前目录:文件名-后缀字符
    :GTDIRSUFFIXCUSTOM
    set FileSuffix=""
    set /p FileSuffix="后缀字符:"
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /a-d/b`) do (
    if not "%%i"==%0 ren "%%i" "%%~ni!FileSuffix!%%~xi")
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 24.子目录:文件名-后缀字符
    :GTSUBDIRSUFFIXCUSTOM
    set SubFileSuffix=""
    set /p SubFileSuffix="后缀字符:"
    cd /d "!HandleDir!"
    rem for /f "usebackq delims=" %%i in (`dir /a-d/b/s`) do (if not "%%i"==%0 ren "%%i" "%%~ni%SubFileSuffix%%%~xi")
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /a-d /b "%%i*.*" 2^>nul`) do (
    		ren "%%i\%%j" "%%~nj!SubFileSuffix!%%~xj"))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 31.当前目录:序数
    :GTDIRORDINAL
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTDIRORDINALORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTDIRORDINALORDERBY)
    cd /d "!HandleDir!"
    set /a num=0
    for /f "usebackq tokens=*" %%i in (`dir /a-d /b /o!OrderBy! /tc`) do (
         if not "%%i"=="%~n0%~x0" (
             set /a num+=1
             ren "%%i" "!num!%%~xi" ))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 32.子目录:序数
    :GTSUBDIRORDINAL
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTSUBDIRORDINALORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTSUBDIRORDINALORDERBY)
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	set /a num=0
    	for /f "usebackq delims=" %%j in (`dir /a-d /b /o!OrderBy! "%%i*.*" 2^>nul`) do (
    		set /a num+=1
    		ren "%%i\%%j" "!num!%%~xj"	))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 33.当前目录:文件名-序数
    :GTDIRFLIENAMEORDINAL
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTDIRFLIENAMEORDINALORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTDIRFLIENAMEORDINALORDERBY)
    cd /d "!HandleDir!"
    set /a num=0
    for /f "usebackq delims=" %%i in (`dir /a-d /b /o!OrderBy! *.* 2^>nul`) do (
    	if not "%~nx0"=="%%i" (
    		set /a num+=1
    		ren "%%i" "%%~ni-!num!%%~xi"))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 34.子目录:文件名-序数
    :GTSUBDIRFILENAMEORDINAL
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTSUBDIRFILENAMEORDINALORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTSUBDIRFILENAMEORDINALORDERBY)
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	set /a num=0
    	for /f "usebackq delims=" %%j in (`dir /a-d /b /o!OrderBy! "%%i*.*" 2^>nul`) do (
    		set /a num+=1
    		ren "%%i\%%j" "%%~nj-!num!%%~xj"	))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 35.当前目录:目录名-序数
    :GTDIRNAMEORDINAL
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTDIRNAMEORDINALORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTDIRNAMEORDINALORDERBY)
    cd /d "!HandleDir!"
    set /a num=0
    for /f "usebackq delims=" %%i in ('%cd%') do set "DirNamePrefix=%%~nxi"
    for /f "usebackq delims=" %%i in (`dir /a-d /b /o!OrderBy! *.* 2^>nul`) do (
    	if not "%~nx0"=="%%i" (
    		set /a num+=1
    		ren "%%i" "%DirNamePrefix%-!num!%%~xi"))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 36.子目录:子目录名-序数
    :GTSUBDIRNAMEORDINAL
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	set /a num=0
    	for /f "usebackq delims=" %%j in (`dir /a-d /b /o!OrderBy! "%%i*.*" 2^>nul`) do (
    		set /a num+=1
    		ren "%%i\%%j" "%%~nxi-!num!%%~xj"	))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 37.自定义字符和开始序数
    :GTDIRCUSTOMNAMEORDINAL
    set SubFilePrefix=""
    set StartNum=0
    set /p SubFilePrefix="前缀字符:"
    set /p StartNum="开始序数:"
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTORDERBY)
    cd /d "!HandleDir!"
    for /f "usebackq tokens=*" %%i in (`dir /a-d /b /o!OrderBy!`) do (
         if not "%%i"=="%~n0%~x0" (
             set /a StartNum+=1
             ren "%%i" "!SubFilePrefix!!StartNum!%%~xi" ))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 311.当前目录:目录名-两位序数
    :GTDIRNAMEORDINALOO
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTDIRNAMEORDINALOOORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTDIRNAMEORDINALOOORDERBY)
    cd /d "!HandleDir!"
    set /a num=0
    for /f "usebackq delims=" %%i in ('%cd%') do set "DirNamePrefix=%%~nxi"
    for /f "usebackq delims=" %%i in (`dir /a-d /b /o!OrderBy! *.* 2^>nul`) do (
    	if not "%~nx0"=="%%i" (
    		set /a num+=1
    		if !num! LSS 10 ( ren "%%i" "%DirNamePrefix%-0!num!%%~xi"  ) else ( ren "%%i" "%DirNamePrefix%-!num!%%~xi" )
    	))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 312.子目录:子目录名-两位序数
    :GTSUBDIRNAMEORDINALOO
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTSUBDIRNAMEORDINALOOORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTSUBDIRNAMEORDINALOOORDERBY)
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	set /a num=0
    	for /f "usebackq delims=" %%j in (`dir /a-d /b /o!OrderBy! "%%i*.*" 2^>nul`) do (
    		set /a num+=1
    		if !num! LSS 10 ( ren "%%i\%%j" "%%~ni-0!num!%%~xj"  ) else ( ren "%%i\%%j" "%%~ni-!num!%%~xj" )
    	))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 313.当前目录:自定义字符和开始序数(两位)
    :GTDIRCUSTOMNAMEORDINALOO
    set SubFilePrefix=""
    set StartNum=0
    set /p SubFilePrefix="前缀字符:"
    set /p StartNum="开始序数:"
    set /a StartNum-=1
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTDIRCUSTOMNAMEORDINALOOORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTDIRCUSTOMNAMEORDINALOOORDERBY)
    cd /d "!HandleDir!"
    for /f "usebackq tokens=*" %%i in (`dir /a-d /b /o!OrderBy!`) do (
         if not "%%i"=="%~n0%~x0" (
             set /a StartNum+=1
    				 if !StartNum! LSS 10 ( ren "%%i" "!SubFilePrefix!0!StartNum!%%~xi"  ) else ( ren "%%i" "!SubFilePrefix!!StartNum!%%~xi" )
    			))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 314.当前目录:目录名-三位序数
    :GTDIRNAMEORDINALOOO
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTDIRNAMEORDINALOOOORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTDIRNAMEORDINALOOOORDERBY)
    cd /d "!HandleDir!"
    set /a num=0
    for /f "usebackq delims=" %%i in ('%cd%') do set "DirNamePrefix=%%~nxi"
    for /f "usebackq delims=" %%i in (`dir /a-d /b /o!OrderBy! *.* 2^>nul`) do (
    	if not "%~nx0"=="%%i" (
    		set /a num+=1
    		if !num! LSS 10 (
    			ren "%%i" "%DirNamePrefix%-00!num!%%~xi"
    		) else (
    			if !num! LSS 100 (
    				ren "%%i" "%DirNamePrefix%-0!num!%%~xi"
    			) else (
    					ren "%%i" "%DirNamePrefix%-!num!%%~xi"
    			)
    		)
    
    	))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 315.子目录:子目录名-三位序数
    :GTSUBDIRNAMEORDINALOOO
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTSUBDIRNAMEORDINALOOOORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTSUBDIRNAMEORDINALOOOORDERBY)
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	set /a num=0
    	for /f "usebackq delims=" %%j in (`dir /a-d /b /o!OrderBy! "%%i*.*" 2^>nul`) do (
    		set /a num+=1
    		if !num! LSS 10 (
          ren "%%i\%%j" "%%~nxi-00!num!%%~xj"
        ) else (
          if !num! LSS 100 (
            ren "%%i\%%j" "%%~nxi-0!num!%%~xj"
          ) else (
              ren "%%i\%%j" "%%~nxi-!num!%%~xj"
          )
        )
    	))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 316.自定义字符和开始序数(三位)
    :GTDIRCUSTOMNAMEORDINALOOO
    set SubFilePrefix=""
    set StartNum=0
    set /p SubFilePrefix="前缀字符:"
    set /p StartNum="开始序数:"
    set /a StartNum-=1
    set NOrderBy=1
    @echo.
    @echo 文件排序方式
    @echo --------------------------------------------
    @echo 1.文件大小
    @echo 2.文件小大
    @echo 3.创建时间早晚
    @echo 4.创建时间晚早
    @echo 5.文件名A-Z
    @echo 6.文件名Z-A
    @echo 7.扩展名A-Z
    @echo 8.扩展名Z-A
    @echo --------------------------------------------
    :GTDIRCUSTOMNAMEORDINALOOOORDERBY
    set /p NOrderBy="文件排序方式:"
    set OrderBy=d
    if %NOrderBy% equ 1 (set OrderBy=-s)
    if %NOrderBy% equ 2 (set OrderBy=s)
    if %NOrderBy% equ 3 (set OrderBy=d)
    if %NOrderBy% equ 4 (set OrderBy=-d)
    if %NOrderBy% equ 5 (set OrderBy=n)
    if %NOrderBy% equ 6 (set OrderBy=-n)
    if %NOrderBy% equ 7 (set OrderBy=-e)
    if %NOrderBy% equ 8 (set OrderBy=e)
    echo %NOrderBy%|findstr /be "[1-8]" >nul || (echo 选择支持的排序方式 & goto GTDIRCUSTOMNAMEORDINALOOOORDERBY)
    cd /d "!HandleDir!"
    for /f "usebackq tokens=*" %%i in (`dir /a-d /b /o!OrderBy!`) do (
         if not "%%i"=="%~n0%~x0" (
             set /a StartNum+=1
    				 if !StartNum! LSS 10 (
    		       ren "%%i" "!SubFilePrefix!00!StartNum!%%~xi"
    		     ) else (
    		       if !StartNum! LSS 100 (
    		         ren "%%i" "!SubFilePrefix!0!StartNum!%%~xi"
    		       ) else (
    		           ren "%%i" "!SubFilePrefix!!StartNum!%%~xi"
    		       )
    		     )
    			))
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 替换当前目录下文件名
    :GTDIRREPLACE
    cd /d "!HandleDir!"
    set /p oldStr=原字符:
    set /p newStr=替换成:
    for /f "usebackq tokens=*" %%a in (`dir /a-d /b`) do (
    	set "newFileName=%%~na"
    	set "newFileName=!newFileName:%oldStr%=%newStr%!"
    	ren "%%a" "!newFileName!%%~xa"
    )
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 替换所有子层级中的文件名
    :GTSUBDIRREPLACE
    cd /d "!HandleDir!"
    set /p oldStr=原字符:
    set /p newStr=替换成:
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /a-d /b "%%i" 2^>nul`) do (
    		set "newFileName=%%~nj"
    		set "newFileName=!newFileName:%oldStr%=%newStr%!"
    		ren "%%i\%%j" "!newFileName!%%~xj"))
    set oldStr=""
    set newStr=""
    set newFileName=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 删除当前目录下文件名
    :GTDIRDEL
    cd /d "!HandleDir!"
    set /p DelStr=删除字符:
    for /f "usebackq tokens=*" %%a in (`dir /a-d /b`) do (
    		set "str=%%~na"
        set "str=!str:%DelStr%=!"
        ren "%%a" "!str!%%~xa"
    )
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 删除所有子层级中的文件名
    :GTSUBDIRDEL
    cd /d "!HandleDir!"
    set /p DelStr=删除字符:
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /a-d /b "%%i" 2^>nul`) do (
    		set "str=%%~nj"
    		set "str=!str:%DelStr%=!"
    		ren "%%i\%%j" "!str!%%~xj"))
    set DelStr=""
    set str=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    :GTExit
    exit
    
    

    转载保留原文地址和作者名,只为错误勘正和信息补充。
    版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

  • 相关阅读:
    String类的concat()方法
    字符串转换为时间类型
    translate函数
    弹出窗口
    数据库大小写问题
    360浏览器屏蔽广告
    String.valueOf()
    测试
    选择排序算法
    输出101~200内的质数
  • 原文地址:https://www.cnblogs.com/daxiang/p/8572706.html
Copyright © 2011-2022 走看看