批處理系列(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許可證)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM