#windows #batch-file #command-line #command-prompt
#Windows #пакетный файл #командная строка
Вопрос:
У меня есть пакетный файл, который находит последний измененный каталог по пути
for /f "delims= %%x in (' dir / ad /od /b "C:Path") do set newest=%%x
Мне нужно изменить этот скрипт, чтобы он искал только определенные папки и находил последнюю измененную. Например, если путь содержит 4 каталога (красный, синий, зеленый, желтый), я хочу разрешить команде искать только 2 каталога (синий, зеленый) и находить последний измененный.
Ответ №1:
for /f "delims=" %%x in (
'dir / ad /od /b "C:Path" ^| Findstr /i "Blue Green" '
) do set newest=%%x
or
Отфильтрует все строки, содержащие синий или зеленый цвета в любой позиции в строке.
Комментарии:
1. Вы пропустили «закрыть» для разделителей.
2. Я бы преобразовал это в регулярное выражение, чтобы оно соответствовало началу и концу слова, иначе оно могло бы соответствовать частичному.
3. @soja Спасибо за подсказку, изменено.
4. Это хорошо работает без особых изменений в оригинальном скрипте. большое спасибо
Ответ №2:
С такими именами каталогов вы даже обойдетесь без findstr:
@ECHO OFF
FOR /F "DELIMS=" %%A IN ('DIR/B/AD-L/OD "C:PATHB?UE" "C:PATHGR?EN"') DO (
SET "NEWEST=%%A"
SET NEWEST
PAUSE