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

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

2 ответа2

0

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

Вы должны выполнить 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

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

0

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

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. Поместите этот файл в папку Desktop под своим профилем пользователя (%USERPROFILE% раскрывает путь к вашему профилю, что-то вроде C:\Users\username).
  8. Откройте тот файл, который вы только что написали, в вашем редакторе .txt по умолчанию (обычно в блокноте).

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

C:\$ Переработать.Корзина \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 \Все пользователи \Microsoft \IdentityCRL \production \temp C:\Users \Все пользователи \Microsoft \RAC \Temp C:\Users \cbhacking \AppData \Local \Temp C:\Users \cbhacking \AppData \Local \Google \Chrome \Данные пользователя \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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .