
У меня есть несколько папок с именем "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
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- установитьлокальный- Установите параметры для управления видимостью переменных среды в пакетном файле.
решение2
Если вы хотите просто перечислить их, а не посещать их по одному, используйте следующие команды:
cd \
dir temp /a:d /b /s > "%USERPROFILE%\Desktop\tempdirs.txt"
start "" "%USERPROFILE%\Desktop\tempdirs.txt"
Если разобрать это подробнее:
- Перейдите в корень вашего диска (эта команда будет сканировать только один диск за раз).
- Используйте
dir
команду для поиска вещей с именем «temp». - Требуйте, чтобы вещи имели атрибут «каталог» (то есть были папками).
- Отображение вывода в «голом» формате, только имен файлов (или, в данном случае, папок).
- Начните с текущего каталога, а также проверьте все подкаталоги (именно поэтому мы запустили команду из корня диска).
- Перенаправить вывод в файл (просто чтобы было легче прочитать его позже).
- Поместите этот файл в папку «Рабочий стол» в вашем профиле пользователя (
%USERPROFILE%
раскрывается как путь к вашему профилю, напримерC:\Users\username
). - Откройте только что созданный вами файл в редакторе .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