Пакетный поиск всех определенных папок

Пакетный поиск всех определенных папок

У меня есть несколько папок с именем "temp", и я бы их нашел, но когда я запускаю приложение, отображается только первый экземпляр. Что нужно сделать, чтобы отобразить остальные?

@echo off
for /d /r "c:\" %%i in (temp) do @if exist "%%i" set path=%%i
echo %path%
pause :: Pause the app.

решение1

Что нужно сделать, чтобы показать остальным?

Вам необходимо выполнить echoвнутри forцикла и внутри ifтеста, в противном случае вы echoобнаружите только последнее совпадение.

Кроме того:

  • Я бы не стал использовать pathв качестве переменной ( PATHэто уже определенная переменная окружения).
  • Вместо этого давайте переменным имена _somename(начальные _имена предотвращают конфликты имен с существующими переменными среды).
  • Это хорошая идея, чтобы setlocalпредотвратить утечку переменных в родительскую командную строку.
  • Вам нужно использовать set setlocal enabledelayedexpansionтак, чтобы обновленное значение отображалось echoкаждый раз по циклу.

Попробуйте следующий пакетный файл:

@echo off
setlocal
setlocal enabledelayedexpansion
@echo off
for /d /r "c:\" %%i in (temp) do (
  @if exist "%%i" (
    @set _variable=%%i
    @echo !_variable!
    )
  )
endlocal

Дальнейшее чтение

решение2

Если вы хотите просто перечислить их, а не посещать их по одному, используйте следующие команды:

cd \
dir temp /a:d /b /s > "%USERPROFILE%\Desktop\tempdirs.txt"
start "" "%USERPROFILE%\Desktop\tempdirs.txt"

Если разобрать это подробнее:

  1. Перейдите в корень вашего диска (эта команда будет сканировать только один диск за раз).
  2. Используйте dirкоманду для поиска вещей с именем «temp».
  3. Требуйте, чтобы вещи имели атрибут «каталог» (то есть были папками).
  4. Отображение вывода в «голом» формате, только имен файлов (или, в данном случае, папок).
  5. Начните с текущего каталога, а также проверьте все подкаталоги (именно поэтому мы запустили команду из корня диска).
  6. Перенаправить вывод в файл (просто чтобы было легче прочитать его позже).
  7. Поместите этот файл в папку «Рабочий стол» в вашем профиле пользователя ( %USERPROFILE%раскрывается как путь к вашему профилю, например C:\Users\username).
  8. Откройте только что созданный вами файл в редакторе .txt по умолчанию (обычно это Блокнот).

Пример результата выполнения этих команд на моей машине:

C:\$Recycle.Bin\S-1-5-21-1498554065-3975735064-3637327715-1001\$RBC5Q5G\Temp C:\KDE\Temp C:\Program Files (x86)\Android\android-sdk\temp C:\ProgramData\Microsoft\IdentityCRL\production\temp C:\ProgramData\Microsoft\RAC\Temp C:\Users\All Users\Microsoft\IdentityCRL\production\temp C:\Users\All Users\Microsoft\RAC\Temp C:\Users\cbhacking\AppData\Local\Temp C:\Users\cbhacking\AppData\Local\Google\Chrome\User Data\Default\Extensions\Temp C:\Users\cbhacking\AppData\Local\Microsoft\MSOIdentityCRL\production\temp C:\Users\cbhacking\AppData\Local\Microsoft\VisualStudio\14.0\SyncSettings\1733649840\Temp C:\Users\cbhacking\AppData\Local\Microsoft\VisualStudio\vshub\Settings\SyncSettings\1206173302\Temp

Связанный контент