nttwqz 发表于 2017-8-29 18:36:21

智能文件选择列表

本来这个原先是为 @有阴也有阳 写的,不过后来发现,自己的WIM简易修改脚本也可以加进去,省的每次WIM文件都要重命名,然后又改进了一下,就成了这个样子,没什么技术含量。权当一娱吧,大神请直接略过……

@echo off
pushd %~dp0
setlocal enabledelayedexpansion
:filesel
::智能文件选择列表
::查找当前目录下的特定文件(不含子目录),并生成列表菜单以供选择
::只有1个文件时自动选中,1-100之间列表文件,>100则不再列表,改为手动输入;选择错误会自动返回选择菜单。
::列表菜单 空格键翻页,Q结束翻页。

rem 设置查找的文件(dir参数之一)
set "dirfile=*.iso"

cls
for /f %%a in ('dir /a /b %dirfile% 2^>nul ^| find /c /n /v ""') do set filenum=%%a
if %filenum% equ 0 (echo 错误:未找到 %dirfile% 文件... & pause>nul & goto filesel)
if %filenum% gtr 100 (
        echo 当前文件数目大于100,列表已带来不了多少便利
        echo 请输入文件路径:
        set /p file=
        set file=!file:"=!
        goto menu
)
if %filenum% equ 1 (set select=1) else dir /a /b %dirfile% | 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 %dirfile% ^| find /v ""') do (
        set "file=%%~fb"
        goto menu
)

:menu
echo %file%
pause

青青草 发表于 2017-8-29 23:02:01

顶一个!
页: [1]
查看完整版本: 智能文件选择列表