zoukankan      html  css  js  c++  java
  • 批处理系列(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指正。
  • 相关阅读:
    Android 2.2 r1 API 中文文档系列(11) —— RadioButton
    Android API 中文 (15) —— GridView
    Android 中文 API (16) —— AnalogClock
    Android2.2 API 中文文档系列(7) —— ImageButton
    Android2.2 API 中文文档系列(6) —— ImageView
    Android 2.2 r1 API 中文文档系列(12) —— Button
    Android2.2 API 中文文档系列(8) —— QuickContactBadge
    [Android1.5]TextView跑马灯效果
    [Android1.5]ActivityManager: [1] Killed am start n
    Android API 中文(14) —— ViewStub
  • 原文地址:https://www.cnblogs.com/daxiang/p/8572647.html
Copyright © 2011-2022 走看看