Как я могу найти определенные каталоги с помощью пакетного файла Windows?

#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