• 批处理系列(2) 获取目录文件名或路径


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

    要执行,保存代码到获取目录文件名或路径.bat,打开拖一个目录进去回车,按提示选择对应数字序数操作。

    @echo off
    @REM @Author: xianghongai@gmail.com
    title 获取目录文件名或路径  by:小可(xianghongai@gmail.com)
    SETLOCAL ENABLEDELAYEDEXPANSION
    
    :GTBegin
    cls
    @echo 获取目录文件名或路径
    @echo -----------------------------
    set HandleDirTemp=:
    set /p HandleDirTemp=需获取的目录:
    
    rem 去除可能存在的双引号
    set "HandleDirTemp=%HandleDirTemp:"=%"
    
    if "%HandleDirTemp%"==":" goto GTBegin
    
    if not exist "%HandleDirTemp%" goto GTBegin
    
    for %%i in ("%HandleDirTemp%") do if /i "%%~di"==%%i goto GTBegin
    
    set "HandleDir=%HandleDirTemp%"
    
    if not "%HandleDirTemp:~-1%"=="\" set "HandleDir=%HandleDirTemp%\"
    
    rem set "HandleDir=%HandleDirTemp%\"
    rem set "HandleDir=%HandleDir:\\=\%"
    rem set "op=%op:~,-1%"
    
    pushd "%HandleDir%"
    cd /d "%HandleDir%">nul 2>nul || exit
    set CurrentDir=%HandleDir%
    popd
    
    :GTCONTINUE
    cls
    @echo 获取目录文件名或路径
    @echo -----------------------------
    @echo 处理目录:%CurrentDir%
    @echo.
    @echo   1 - 退出
    @echo   2 - 所有目录和文件路径
    @echo   3 - 所有目录路径
    @echo   4 - 指定格式的文件路径
    @echo   5 - 所有目录名和文件名
    @echo   6 - 所有层级目录名
    @echo   7 - 所有层级文件名
    @echo   8 - 当前层级目录名
    @echo   9 - 当前层级文件名
    @echo   0 - 重新设置目录
    @echo.
    @ set /p GTOperator="选择操作编号,按回车键: "
    @echo.
    
    set varDir= %~dp0
    set varTimeTemp1=%time: =0%
    set varTimeTemp2=%varTimeTemp1::=%
    set varTime=%varTimeTemp2:~0,6%
    set varDate=%date:~0,4%%date:~5,2%%date:~8,2%%varTime%
    
    if /i "%GTOperator%"=="1" goto GTExit
    if /i "%GTOperator%"=="2" goto GTDIRFILEPATH
    if /i "%GTOperator%"=="3" goto GTDIRPATH
    if /i "%GTOperator%"=="4" goto GTFILEPATHCUSTOMFORMAT
    if /i "%GTOperator%"=="5" goto GTDIRFILENAME
    if /i "%GTOperator%"=="6" goto GTDIRNAME
    if /i "%GTOperator%"=="7" goto GTFILESNAME
    if /i "%GTOperator%"=="8" goto GTDIRNAMECURRENT
    if /i "%GTOperator%"=="9" goto GTFILESNAMECURRENT
    if /i "%GTOperator%"=="0" goto GTBegin
    
    echo 输入正确的操作编号
    pause >nul
    goto GTCONTINUE
    
    :GTDIRFILEPATH
    set ListFileName=所有目录和文件路径
    set LISTFilePath=%varDir%%ListFileName%-%varDate%.txt
    @echo 需要一点时间,请耐心等待...
    for /f "delims=" %%a in ('dir /b /s "%HandleDir%"') do echo %%~a >> %LISTFilePath%
    if not exist %LISTFilePath% goto GTNODOC
    :: echo 完成操作
    start %LISTFilePath%
    :: pause >nul
    goto GTCONTINUE
    
    :GTDIRPATH
    set ListFileName=所有目录
    set LISTFilePath=%varDir%%ListFileName%-%varDate%.txt
    @echo 需要一点时间,请耐心等待...
    for /f "delims=" %%a in ('dir /ad /b /s "%HandleDir%"') do echo %%~a >> %LISTFilePath%
    if not exist %LISTFilePath% goto GTNODOC
    :: echo 完成操作
    start %LISTFilePath%
    :: pause >nul
    goto GTCONTINUE
    
    :GTFILEPATHCUSTOMFORMAT
    @ set /p FileExtension="文件扩展名(*.jpg/*.gif/*.png/*.mp4/*.mp3/*.exe/*.txt …):"
    set ListFileName=指定格式的文件路径
    set LISTFilePath=%varDir%%ListFileName%-%varDate%.txt
    @echo 需要一点时间,请耐心等待...
    for /f "delims=" %%a in ('dir /b /s "%HandleDir%"%FileExtension%') do echo %%~a >> %LISTFilePath%
    if not exist %LISTFilePath% goto GTNODOC
    :: echo 完成操作
    start %LISTFilePath%
    :: pause >nul
    goto GTCONTINUE
    
    :GTDIRFILENAME
    set ListFileName=所有目录和文件名
    set LISTFilePath=%varDir%%ListFileName%-%varDate%.txt
    @echo 需要一点时间,请耐心等待...
    for /f "delims=" %%a in ('dir /b /s "%HandleDir%"') do echo %%~nxa >> %LISTFilePath%
    if not exist %LISTFilePath% goto GTNODOC
    :: echo 完成操作
    start %LISTFilePath%
    :: pause >nul
    goto GTCONTINUE
    
    :GTDIRNAME
    set ListFileName=所有目录名
    set LISTFilePath=%varDir%%ListFileName%-%varDate%.txt
    @echo 需要一点时间,请耐心等待...
    for /f "delims=" %%a in ('dir /ad /b /s "%HandleDir%"') do echo %%~nxa >> %LISTFilePath%
    if not exist %LISTFilePath% goto GTNODOC
    :: echo 完成操作
    start %LISTFilePath%
    :: pause >nul
    goto GTCONTINUE
    
    :GTFILESNAME
    set ListFileName=所有文件名
    set LISTFilePath=%varDir%%ListFileName%-%varDate%.txt
    @echo 需要一点时间,请耐心等待...
    for /f "delims=" %%a in ('dir /a-d /b /s "%HandleDir%"') do echo %%~nxa >> %LISTFilePath%
    if not exist %LISTFilePath% goto GTNODOC
    :: echo 完成操作
    start %LISTFilePath%
    :: pause >nul
    goto GTCONTINUE
    
    :GTDIRNAMECURRENT
    set ListFileName=当前层级目录名
    set LISTFilePath=%varDir%%ListFileName%-%varDate%.txt
    @echo 需要一点时间,请耐心等待...
    for /f "delims=" %%a in ('dir /ad /b "%HandleDir%"') do echo %%~nxa >> %LISTFilePath%
    if not exist %LISTFilePath% goto GTNODOC
    :: echo 完成操作
    start %LISTFilePath%
    :: pause >nul
    goto GTCONTINUE
    
    :GTFILESNAMECURRENT
    set ListFileName=当前层级文件名
    set LISTFilePath=%varDir%%ListFileName%-%varDate%.txt
    @echo 需要一点时间,请耐心等待...
    for /f "delims=" %%a in ('dir /a-d /b "%HandleDir%"') do echo %%~nxa >> %LISTFilePath%
    if not exist %LISTFilePath% goto GTNODOC
    :: echo 完成操作
    start %LISTFilePath%
    :: pause >nul
    goto GTCONTINUE
    
    :GTNODOC
    echo %CurrentDir% 没有相关目录或文档!
    pause >nul
    goto GTCONTINUE
    
    
    :GTExit
    exit
    
    

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

    如您发现有误,请联系xianghongai@gmail.com指正。
  • 相关阅读:
    【个人博客设计】
    复杂多边形光栅化算法
    xmake 描述语法和作用域详解
    协程分析之context上下文切换
    tbox协程使用之切换与等待
    记boost协程切换bug发现和分析
    跨平台自动构建工具v1.0.2 发布
    xmake从入门到精通9:交叉编译详解
    xmake从入门到精通9:交叉编译详解
    跨平台c开发库tbox:内存库使用详解
  • 原文地址:https://www.cnblogs.com/daxiang/p/8572647.html
Copyright © 2020-2023  润新知