Lote para encontrar todas as pastas específicas

0

Eu tenho várias pastas chamadas "temp", e gostaria de encontrá-las, mas quando eu executo o aplicativo, 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.
    
por user3486019 01.10.2015 / 19:23

2 respostas

0

O que deve ser feito para mostrar aos outros?

Você precisa executar o echo dentro do for loop e dentro do if test, caso contrário, você estará apenas echo da última correspondência.

Além disso:

  • Eu não usaria path como variável ( PATH é uma variável de ambiente já definida).
  • Nomeie suas variáveis _somename (o _ principal impede confrontos de nomes com variáveis de ambiente existentes).
  • É uma boa ideia usar setlocal para impedir que suas variáveis vazem para o prompt de comando pai.
  • Você precisa usar set setlocal enabledelayedexpansion para que o valor atualizado seja echo ed a cada vez em torno do loop.

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

por 01.10.2015 / 19:53
0

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 quebrar isso:

  1. Vá para a raiz da sua unidade (esse comando varrerá apenas uma unidade de cada vez).
  2. Use o comando dir para encontrar coisas com o nome "temp".
  3. Exija que as coisas tenham o atributo "directory" (ou seja, sejam pastas).
  4. Exibe a saída no formato "simples", apenas os nomes de arquivo (ou, neste caso, pasta).
  5. Inicie no diretório atual e também verifique todos os subdiretórios (é por isso que executamos o comando a partir da raiz da unidade).
  6. Redirecione a saída para um arquivo (apenas para facilitar a leitura posterior).
  7. Coloque esse arquivo na pasta Área de trabalho sob o seu perfil de usuário ( %USERPROFILE% expande para o caminho para o seu perfil, algo como C:\Users\username ).
  8. Abra o arquivo que você acabou de escrever no editor .txt padrão (geralmente o Notepad).

Exemplo de resultado da execução desses comandos na minha máquina:

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.0\SyncSettings33649840\Temp C:\Users\cbhacking\AppData\Local\Microsoft\VisualStudio\vshub\Settings\SyncSettings06173302\Temp

    
por 01.10.2015 / 19:58

Tags