Пакетный файл Windows для списка папок, которые имеют определенный файл в них

Я пытаюсь создать файл, который имеет список каталогов, которые имеют определенное имя файла в них.

Скажем, я пытаюсь найти каталоги, которым назвали файл *.joe в них. Я первоначально попробовал просто простое dir /ad *.joe > dir_list.txt , но это ищет имена каталогов *.joe, таким образом, никакие не идут.

Затем я пришел к заключению, что для цикла был, вероятно, мой лучший выбор. Я запустил с

for /d /r %a in ('dir *.joe /b') do @echo %a >> dir_list.txt

и было похоже, что это не выполняло команду dir. Я добавил "usebackq", но это, кажется, только работает на/F, управляют расширением.

Идеи?

5
задан Joey 25 April 2010 в 14:29
поделиться

4 ответа

Поскольку « dir / s / b имя_файла » не сокращает его, как насчет следующего

for /d /r %a in (*) do  @if exist %a\*.scr (echo %a)

Похоже, что внутри командного файла единственное, что нужно сохранить, - это% дающий

for /d /r %%a in (*) do  @if exist %%a\*.scr (echo %%a)
6
ответ дан 14 December 2019 в 04:33
поделиться

Сохраните это в search.bat или (что-нибудь еще, что вы можете вспомнить)

@echo off
setlocal EnableDelayedExpansion
set last=?

if "%1" EQU "" goto usage

for /f %%I in ('dir /s /b /o:n /a-d "%1"') do (
  if !last! NEQ %%~dpI ( 
    set last=%%~dpI
    echo !last!
  )
)
goto end

:usage
echo Please give search parameter.

:end

и используйте следующим образом:

search.bat *.joe >dir_list.txt

Примечание что он ищет в текущем контексте пути. Вы можете добавить .bat в место, которое находится в ПУТЬ , чтобы вы могли вызывать его из любого места.

1
ответ дан 14 December 2019 в 04:33
поделиться

Это напечатает каталог и имя файла, может быть полезно, а может и нет:

dir /b /s | findstr "\.joe"

findstr использует регулярное выражение.

1
ответ дан 14 December 2019 в 04:33
поделиться

dir / s / b * .joe >> dir_list.txt , а затем скрипт, например, gawk, чтобы избавиться от имен файлов после dirnames

0
ответ дан 14 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: