Предположим, у меня есть каталог следующим образом:

<whatever>\1
<whatever>\3
<whatever>\7
<whatever>\15
<whatever>\42

Есть ли команда, которую я могу запустить, чтобы получить наибольшее число, например, 42?

1 ответ1

2

Я уверен, что есть лучший способ, но это похоже на работу. В любом случае, для положительных ценностей.

@echo off
SETLOCAL EnableDelayedExpansion

pushd whatever
set h=0
for /d %%d in (*.*) do (    
    set /a x=!h!-%%~nd  
    if "!x:~0,1!"=="-" set h=%%d    
)
popd

echo Highest value is !h!

Сначала мы переместимся в whatever папку.

Затем мы используем for /d для циклического перебора всех подкаталогов и вычитаем «значение» имени папки (%%~nd , где %%d - полное имя пути, а ~n извлекает только имя) из текущего старшего значения (!h!).

Если результат x меньше 0 (начинается с -), это означает, что мы нашли более высокое значение и перезаписываем !h! ,

Наконец мы возвращаемся в папку, с которой начали.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .