@echo off
setlocal enabledelayedexpansion
title 智能文件選擇列表
pushd %~dp0 & cd /d %~dp0
:menu
::智能文件選擇列表 *.wim
if not defined wimfile call :filesel wim
if %errorlevel%==0 (
set wimfile=%selfile%
echo 已經選擇:!wimfile!
) else (
echo 錯誤:未找到 *.%suffix% 文件...
)
pause
::=================================================
goto :EOF
:filesel
::智能文件選擇列表
::只有1個文件時自動選中,大於1≤100列表文件,>100則再也不列表,改成手動輸入;選擇錯誤會自動返回選擇菜單。
::列表菜單 空格鍵翻頁,Q結束翻頁
set "suffix=%~1"
set "errorlevel=0"
for /f %%a in ('dir /a /b *.%suffix% 2^>nul ^| find /c /n /v ""') do set filenum=%%a
if %filenum% EQU 0 ( set "errorlevel=1" & goto :EOF )
if %filenum% GTR 100 (
echo 當前文件數目大於100,列表已帶來不了多少便利
echo 請輸入文件路徑:
set /p selfile=
set selfile=!selfile:"=!
cls & goto :EOF )
if %filenum% EQU 1 ( set select=1 ) else (
dir /a /b *.%suffix% | find /n /v "" | more & set /p select=請輸入文件編號:
)
if %select% LSS 1 ( echo 只能輸入 1 - %filenum% 之間的數字 && pause>nul && goto filesel )
if %select% GTR %filenum% ( echo 只能輸入 1 - %filenum% 之間的數字 && pause>nul && goto filesel )
set /a var=%select%-1
if not %var% LEQ 0 ( set "skip=skip=%var% " ) else set skip=
for /f "%skip%delims=" %%b in ('dir /a /b *.%suffix% ^| find /v ""') do (
set "selfile=%%~fb" && cls & goto :EOF
)
::=================================================