Есть множество способов. Это один из них:
@echo off & set filename=
if "%~5" == "" set "myfind=dir /b ^| find "%~2" ^| find "%~3" ^| find "%~4" ^|sort /r ^|findstr /r [0-9]"
if "%~4" == "" set "myfind=dir /b ^| find "%~2" ^| find "%~3" ^|sort /r ^|findstr /r [0-9]"
if "%~3" == "" set "myfind=dir /b ^| find "%~2" ^|sort /r ^|findstr /r [0-9]"
if "%~2" == "" set "myfind=dir /b ^|sort /r ^|findstr /r [0-9]"
pushd "%~1"
for /f %%a in ('%myfind%') do (
set "filename=%%a"
goto done
)
:done
popd
if not defined filename echo Not match found & exit /b 1
echo the highest found is %filename%
exit /b 0
Обычно вы запускаете его как:
batch-file-name.cmd "C:\path\to\search" "search1" "search2" "search3"
, например, используя ваш пример:
batch-file-name.cmd "c:\temp" "05" "new"
или даже расширяйте поиск:
batch-file-name.cmd "c:\temp" "05" "new" ".txt"
Как это работает: Мы устанавливаем строку поиска каждый раз, если требуется дополнительная команда find
. на данный момент у нас есть до трех находок и один путь, но его можно расширить до большего числа. Однако вы должны установить их в порядке убывания. Я также добавил дополнительный оператор if not defined filename
, чтобы гарантировать, что вы будете предупреждены, если результат не найден.