智能文件选择列表—— bat 批处理

Posted markleaf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能文件选择列表—— bat 批处理相关的知识,希望对你有一定的参考价值。

智能文件选择列表 *.wim

@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
)
::=================================================

 

以上是关于智能文件选择列表—— bat 批处理的主要内容,如果未能解决你的问题,请参考以下文章

如何用bat批处理进行简化快速文件搜索,并将结果输出到列表文件

bat 批处理文件全部命令

DOS,批处理bat中的DIR命令

bat批处理,根据清单中的文件名将多个文件移动到另外一个路径下,如何批量处理?非常感谢!

bat批处理里怎么取得当前目录

批处理选择命令最初选择怎样写?