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

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

    利用批处理对目录名进行操作。

    @echo off
    @REM @Author: xianghongai@gmail.com
    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 -----------------3.替换删除-----------------
    @echo   31 - 仅替换第一层子目录名
    @echo   32 - 替换第一层级下所有层级的目录名
    @echo   33 - 仅删除第一层子目录名
    @echo   34 - 删除第一层级下所有层级的目录名
    @echo -----------------4.创建目录-----------------
    @echo   41 - 创建目录(仅当前目录)
    @echo   42 - 创建目录(第一层子目录)
    @echo -----------------5.创建文件-----------------
    @echo   51 - 创建文件(仅当前目录)
    @echo   52 - 创建文件(仅第一层子目录)
    @echo   53 - 创建文件(所有子目录)
    @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 GTDIRREPLACE
    if %GTOperator% equ 32 goto GTSUBDIRREPLACE
    if %GTOperator% equ 33 goto GTDIRDEL
    if %GTOperator% equ 34 goto GTSUBDIRDEL
    
    if %GTOperator% equ 41 goto GTMKDIR
    if %GTOperator% equ 42 goto GTSUBDIRMKDIR
    
    if %GTOperator% equ 51 goto GTMKFILE
    if %GTOperator% equ 52 goto GTSUBDIRMKFILE
    if %GTOperator% equ 53 goto GTAllSUBDIRMKFILE
    
    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 /ad /b 2^>nul') do (
    	if not "%~nx0"=="%%i" (
    		ren "%%i" "%DirNamePrefix%-%%~ni"
    	)
    )
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 12.第一层下所有层级的目录名:上一层目录名-本身目录名
    :GTSUBDIRPREFIX
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /ad /b "%%i" 2^>nul`) do (
    		ren "%%i\%%j" "%%~nxi-%%~nj"	)	)
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 13.仅第一层子目录:前缀字符-本身目录名
    :GTDIRPREFIXCUSTOM
    set FilePrefix=""
    set /p FilePrefix="前缀字符:"
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad/b`) do (
    if not "%%i"==%0 ren "%%i" "%FilePrefix%%%~ni")
    set FilePrefix=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 14.第一层下所有层级的目录名:前缀字符-本身目录名
    :GTSUBDIRPREFIXCUSTOM
    set SubFilePrefix=""
    set /p SubFilePrefix="前缀字符:"
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /ad /b "%%i" 2^>nul`) do (
    		ren "%%i\%%j" "!SubFilePrefix!%%~nj"))
    set SubFilePrefix=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 21.仅第一层子目录:本身目录名-后缀字符
    :GTDIRSUFFIX
    set FileSuffix=""
    set /p FileSuffix="后缀字符:"
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad/b`) do (
    if not "%%i"==%0 ren "%%i" "%%~ni%FileSuffix%")
    set FileSuffix=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 22.第一层下所有层级的目录名:本身目录名-后缀字符
    :GTSUBDIRSUFFIX
    set SubFileSuffix=""
    set /p SubFileSuffix="后缀字符:"
    cd /d "!HandleDir!"
    for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
    	for /f "usebackq delims=" %%j in (`dir /ad /b "%%i" 2^>nul`) do (
    		ren "%%i\%%j" "%%~nj!SubFileSuffix!"))
    set SubFileSuffix=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    
    rem 31.仅替换第一层子目录名
    :GTDIRREPLACE
    cd /d "!HandleDir!"
    set /p oldStr=原字符:
    set /p newStr=替换成:
    for /f "usebackq tokens=*" %%a in (`dir /ad /b`) do (
    	set "newFileName=%%~nxa"
    	set "newFileName=!newFileName:%oldStr%=%newStr%!"
    	ren "%%a" "!newFileName!"
    )
    set oldStr=""
    set newStr=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 32.替换第一层级下所有层级的目录名
    :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 /ad /b "%%i" 2^>nul`) do (
    		set "newFileName=%%~nxj"
    		set "newFileName=!newFileName:%oldStr%=%newStr%!"
    		ren "%%i\%%j" "!newFileName!"))
    set oldStr=""
    set newStr=""
    set newFileName=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 33.仅删除第一层子目录名
    :GTDIRDEL
    cd /d "!HandleDir!"
    set /p DelStr=删除字符:
    for /f "usebackq tokens=*" %%a in (`dir /ad /b`) do (
    		set "str=%%a"
        set "str=!str:%DelStr%=!"
        ren "%%a" "!str!"
    )
    set DelStr=""
    set str=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 34.删除第一层级下所有层级的目录名
    :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 /ad /b "%%i" 2^>nul`) do (
    		set "str=%%~nxj"
    		set "str=!str:%DelStr%=!"
    		ren "%%i\%%j" "!str!"))
    set DelStr=""
    set str=""
    echo.
    echo :)  搞定(回车继续其它操作)
    pause >nul
    goto GTCONTINUE
    
    rem 41.创建目录(仅当前目录)
    :GTMKDIR
    set /p CDirName=目录名:
    if "%CDirName%"=="" goto :GTMKDIR
    cd /d "!HandleDir!"
    md %CDirName%
    echo.
    echo :)  搞定(回车继续其它操作)!
    pause >nul
    goto GTCONTINUE
    
    rem 42.创建目录(第一层子目录)
    :GTSUBDIRMKDIR
    set /p SubCDirName=目录名:
    if "%SubCDirName%"=="" goto :GTSUBDIRMKDIR
    cd /d "!HandleDir!"
    for /f "delims=" %%i in ('dir /b /ad') do (
    cd "%%i"
    md %SubCDirName%
    cd "%%~dpi"
    )
    echo.
    echo :)  搞定(回车继续其它操作)!
    pause >nul
    goto GTCONTINUE
    
    rem 51.创建文件(仅当前目录)
    :GTMKFILE
    set /p CFileName=文件名:
    if "%CFileName%"=="" goto :GTMKFILE
    set CFiledNameExpande="%CFileName%".txt
    cd /d "!HandleDir!"
    cd.>"%CFiledNameExpande%"
    echo.
    echo :)  搞定(回车继续其它操作)!
    pause >nul
    goto GTCONTINUE
    
    rem 52.创建文件(第一层子目录)
    :GTSUBDIRMKFILE
    set /p SubCFileName=文件名:
    if "%SubCFileName%"=="" goto :GTSUBDIRMKFILE
    set CFiledNameExpande="%SubCFileName%".txt
    cd /d "!HandleDir!"
    for /f "tokens=*" %%i in ('dir /b /ad') do cd.>"%%i\%CFiledNameExpande%"
    echo.
    echo :)  搞定(回车继续其它操作)!
    pause >nul
    goto GTCONTINUE
    
    rem 53.创建文件(所有子目录)
    :GTAllSUBDIRMKFILE
    set /p AllSubCFilesName=文件名:
    if "%AllSubCFilesName%"=="" goto :GTAllSUBDIRMKFILE
    set CFiledNameExpande="%AllSubCFilesName%".txt
    cd /d "!HandleDir!"
    for /f "tokens=*" %%i in ('dir /b /ad /s') do cd.>"%%i\%CFiledNameExpande%"
    echo.
    echo :)  搞定(回车继续其它操作)!
    pause >nul
    goto GTCONTINUE
    
    :GTExit
    exit
    
    

    删除所有空目录

    @echo off
    @REM @Author: xianghongai@gmail.com
    title 删除所有空目录  by:小可(xianghongai@gmail.com)
    @echo 删除所有空目录(含子目录)
    @echo -----------------------------
    @ set /p GTConfirm="继续操作吗?(y/n) "
    
    if /i "%GTConfirm:~0,1%"=="y" (
    	goto GTYES
    ) else ( goto GTNO )
    
    :GTYES
    for /f "delims=" %%i in ('dir /ad /b /s^|sort /r') do rd /q "%%i" 2>nul
    @echo :) 操作完成!
    pause
    
    :GTNO
    exit
    

    @Echo Off
    @REM @Author: xianghongai@gmail.com
    title 删除所有空目录  by:小可(xianghongai@gmail.com)
    SETLOCAL ENABLEDELAYEDEXPANSION
    @echo 删除所有空目录(含子目录)
    @echo -----------------------------
    @ set /p GTConfirm="继续操作吗?(y/n) "
    if /i "%GTConfirm:~0,1%"=="y" (
    	goto GTYES
    ) else ( goto GTNO )
    :GTYES
    for /f "delims=" %%i in ('dir /ad /b /s') do call :RdEmptyDir "%%i"
    goto :eof
    :RdEmptyDir
    rd %1 2>nul||goto :eof
    set DirPath=%1
    for /f "delims=" %%i in (%DirPath%) do (
         set DirPath="%%~dpi"
         for /f "delims=" %%j in ('dir /ad /b "%%~dpi"')do rd "%%~dpi%%j" 2>nul||goto :eof
    )
    if "%DirPath:~-2,1%"=="" set DirPath="%DirPath:~1,-2%"
    if /i not "%cd%"==%DirPath% call :RdEmptyDir %DirPath%
    goto :eof
    
    :GTNO
    exit
    
    

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

  • 相关阅读:
    webpack实践(三)- html-webpack-plugin
    webpack实践(二)- webpack配置文件
    webpack实践(一)- 先入个门
    VueRouter爬坑第三篇-嵌套路由
    VueRouter爬坑第二篇-动态路由
    chrome中安装Vue调试工具vue-devtools
    VueRouter爬坑第一篇-简单实践
    使用vue-cli搭建项目开发环境
    Jmeter基础001----jmeter的安装与配置
    接口测试基础001----接口、接口测试
  • 原文地址:https://www.cnblogs.com/daxiang/p/8572716.html
Copyright © 2011-2022 走看看