Lote para encontrar todas as pastas específicas

Lote para encontrar todas as pastas específicas

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 echodentro do forloop e dentro do ifteste, caso contrário você estará apenas echoexecutando a última partida.

Além disso:

  • Eu não usaria pathcomo 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 setlocalpara impedir o vazamento de suas variáveis ​​para o prompt de comando pai.
  • Você precisa usar set setlocal enabledelayedexpansionpara que o valor atualizado seja echoeditado 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

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:

  1. Vá para a raiz da sua unidade (este comando verificará apenas uma unidade por vez).
  2. Use o dircomando para encontrar coisas chamadas "temp".
  3. Exija que as coisas tenham o atributo "diretório" (ou seja, sejam pastas).
  4. Exibe a saída em formato "básico", apenas os nomes dos arquivos (ou, neste caso, das pastas).
  5. Comece no diretório atual e verifique também todos os subdiretórios (é por isso que executamos o comando na raiz do drive).
  6. Redirecione a saída para um arquivo (apenas para facilitar a leitura de tudo mais tarde).
  7. Coloque este arquivo na pasta Desktop em seu perfil de usuário ( %USERPROFILE%expande para o caminho do seu perfil, algo como C:\Users\username).
  8. 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

informação relacionada