
Tenho várias pastas chamadas "temp" e gostaria de encontrá-las, mas quando executo a aplicação, apenas a primeira instância é mostrada. O que deve ser feito para mostrar aos outros?
@echo off
for /d /r "c:\" %%i in (temp) do @if exist "%%i" set path=%%i
echo %path%
pause :: Pause the app.
Responder1
O que deve ser feito para mostrar aos outros?
Você precisa executar echo
dentro do for
loop e dentro do if
teste, caso contrário você estará apenas echo
executando a última partida.
Além disso:
- Eu não usaria
path
como variável (PATH
é uma variável de ambiente já definida). - Em vez disso, nomeie suas variáveis
_somename
(o início_
evita conflitos de nomes com variáveis de ambiente existentes). - É uma boa ideia usar
setlocal
para impedir o vazamento de suas variáveis para o prompt de comando pai. - Você precisa usar
set setlocal enabledelayedexpansion
para que o valor atualizado sejaecho
editado toda vez que o loop for executado.
Experimente o seguinte arquivo em lote:
@echo off
setlocal
setlocal enabledelayedexpansion
@echo off
for /d /r "c:\" %%i in (temp) do (
@if exist "%%i" (
@set _variable=%%i
@echo !_variable!
)
)
endlocal
Leitura adicional
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- definirlocal- Defina opções para controlar a visibilidade das variáveis de ambiente em um arquivo em lote.
Responder2
Se você quiser apenas listá-los, em vez de visitá-los um de cada vez, use os seguintes comandos:
cd \
dir temp /a:d /b /s > "%USERPROFILE%\Desktop\tempdirs.txt"
start "" "%USERPROFILE%\Desktop\tempdirs.txt"
Para decompor isso:
- Vá para a raiz da sua unidade (este comando verificará apenas uma unidade por vez).
- Use o
dir
comando para encontrar coisas chamadas "temp". - Exija que as coisas tenham o atributo "diretório" (ou seja, sejam pastas).
- Exibe a saída em formato "básico", apenas os nomes dos arquivos (ou, neste caso, das pastas).
- Comece no diretório atual e verifique também todos os subdiretórios (é por isso que executamos o comando na raiz do drive).
- Redirecione a saída para um arquivo (apenas para facilitar a leitura de tudo mais tarde).
- Coloque este arquivo na pasta Desktop em seu perfil de usuário (
%USERPROFILE%
expande para o caminho do seu perfil, algo comoC:\Users\username
). - Abra o arquivo que você acabou de escrever em seu editor .txt padrão (geralmente o Bloco de Notas).
Resultado de exemplo da execução destes comandos em minha máquina:
C:\$Recycle.Bin\S-1-5-21-1498554065-3975735064-3637327715-1001\$RBC5Q5G\Temp C:\KDE\Temp C:\Arquivos de programas (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\ produção\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