批处理脚本更好地搜索文件或接近窗口搜索

时间:2013-09-30 12:21:49

标签: windows batch-file

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

使用“find”它只是普通...并且需要输入文件名“file 1.txt”“file2.txt”“file letter.txt”

正好是文件夹位置......

任何其他方式?

尝试输入“file”

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

“file 1.txt” “FILE2.TXT” “file letter.txt”

并且有号码 1。 “file 1.txt” 2。 “FILE2.TXT” 3。 “file letter.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
问题是 当输入数字...批处理otomatic close ...文件不会打开...

任何建议?

1 个答案:

答案 0 :(得分: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"