Предположим, у меня есть каталог следующим образом:
<whatever>\1
<whatever>\3
<whatever>\7
<whatever>\15
<whatever>\42
Есть ли команда, которую я могу запустить, чтобы получить наибольшее число, например, 42?
Предположим, у меня есть каталог следующим образом:
<whatever>\1
<whatever>\3
<whatever>\7
<whatever>\15
<whatever>\42
Есть ли команда, которую я могу запустить, чтобы получить наибольшее число, например, 42?
Я уверен, что есть лучший способ, но это похоже на работу. В любом случае, для положительных ценностей.
@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!
,
Наконец мы возвращаемся в папку, с которой начали.