跳到主要内容

获取目录名、文件名或路径

以前在电商团队,小伙伴每天要处理很多商品文件,上千个商品找对应文件不方便。早先不知道有 Everything 这个工具,自己用 C# 写了快速搜寻和定位文件、目录的小工具,其中路径数据获取,用 C# 生成批处理文件执行调用实现,然后关键字匹配找目录和文件,还可以作用于局域网。

批处理部分代码如下:

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

@echo off
@REM @Author: [email protected]
title 获取目录文件名或路径
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

更新日志:

  • 2017-05-16