0

这个批处理脚本可以更好地搜索文件

使用“查找”只是普通的......并且需要准确输入文件名“文件1.txt”“文件2.txt”“文件字母.txt”

以及确切的文件夹位置...

还有其他方法吗?

只需尝试输入“文件”

它显示所有名为“file”的文件

“文件 1.txt” “文件 2.txt” “文件 letter.txt”

并有数字 1 。“文件 1.txt” 2 . “文件 2.txt” 3 . “文件信.txt”

并输入数字以选择我们想要的文件...它将打开。

@echo off
setlocal EnableDelayedExpansion
if exist log del log
set "token=%~1"
if not defined token (
    echo Search for what string?
    set /p token=^>
    echo.
)
set a=0
for /f "delims=" %%A in ('dir /b ^| find "%token%"') do (
    set /a a+=1
    echo !a!. %%A
    echo !a!. %%A >>log
)
echo.
echo Enter number of file to open.
set /p op=^>

for /f "tokens=1,2 delims=." %%A in (log) do (
    if %%A EQU %op% start %%B
)
del log

问题是输入数字时...批量自动关闭...文件无法打开...

有什么建议吗?

4

1 回答 1

2

你可以试试这个:

@echo off &setlocal
set /p "spat=Enter search pattern: "
for /f "tokens=1*delims=:" %%a in ('dir /b /s /a-d \%spat%*.txt 2^>nul^|findstr /ri "%spat%[^a-z]"^|findstr /rn $') do set "$%%a=%%~b"&set /a fcnt+=1
if not defined fcnt (echo Error! Not such file "%spat%".&goto:eof)
:loop
for /f "tokens=1*delims==$" %%a in ('set "$" 2^>nul') do echo %%a.%%~b
set /p "fno=Enter file number to run: "
echo %fno%|findstr "[1-9][0-9]*" >nul || (echo Error! Try again.&goto:loop)
if %fno% gtr %fcnt% (echo Error! Enter number between 1-%fcnt%. Try again.&goto:loop)
for /f "tokens=1*delims==$" %%a in ('set "$%fno%"') do "%%~b"
于 2013-09-30T13:21:06.740 回答