Como eu excluo diretórios específicos de uma pesquisa do Windows?

2

Eu quero procurar um arquivo na unidade C :. Eu sei com certeza que não existe em um diretório específico (digamos Program Files). Portanto, para encurtar o tempo de pesquisa, desejo que o Windows exclua a pesquisa nessas pastas específicas. Como posso realizar essa pesquisa (que pesquisa na unidade C, mas pode pular pastas específicas)?

Eu preferiria que a resposta fosse um método para a pesquisa do Windows, mas não sou contra o fato de ser um script ou outro programa simples.

    
por happybuddha 06.03.2013 / 15:48

5 respostas

0

De acordo com a resposta de user117893 e usando o comando dir em um loop for . Você pode usar robocopy ou xcopy com a opção /L (somente lista) para pesquisar arquivos.

Robocopy

Basta especificar o diretório inicial C:\ e o nome do arquivo de destino *File.txt

robocopy C:\ %Temp% *File.txt /S /XD Windows "Program Files" "Program Files (x86)" /XJ /L /NS /NC /NDL /NP /NJH /NJS

Saída

C:\Users\Username\Desktop>robocopy C:\ %Temp% *Snapshot.txt /S /XD Windows "Program Files" "Program Files (x86)" /XJ /L /NS /NC /NDL /NP /NJH /NJS

                            C:\Temp13-02-13-1408-31_Snapshot.txt
                            C:\Temp13-02-13-1523-47_Snapshot.txt
                            C:\Temp13-02-13-1534-17_Snapshot.txt
                            C:\Temp13-02-13-1535-55_Snapshot.txt
                            C:\Temp13-02-13-1537-44_Snapshot.txt
                            C:\Temp13-02-18-1552-44_Snapshot.txt
                            C:\Temp13-02-18-1553-21_Snapshot.txt
                            C:\Temp13-02-18-1556-05_Snapshot.txt
                            C:\Temp13-02-18-1558-45_Snapshot.txt
                            C:\Temp13-02-18-1610-06_Snapshot.txt

xcopy

A configuração

leva alguns passos extras.

  1. É necessário criar um arquivo de texto exclude.txt que contenha as palavras-chave a serem excluídas na pesquisa.
  2. Para evitar uma mensagem de erro de cópia cíclica, uma letra de unidade temporária deve ser criada ou outra unidade deve ser usada como o diretório de destino.
  3. Em seguida, especifique o diretório inicial C:\ e o nome do arquivo de destino *File.txt

exclude.txt

\Windows\
\Program Files\
\Program Files (x86)\

Comandos

subst Z: %Temp%
xcopy C:\*File.txt Z:\ /S /L /EXCLUDE:exclude.txt
subst Z: \d

Saída

C:\Users\Username\Desktop>xcopy C:\*Snapshot.txt Z:\ /S /L /EXCLUDE:exclude.txt
C:\Temp13-02-13-1408-31_Snapshot.txt
C:\Temp13-02-13-1523-47_Snapshot.txt
C:\Temp13-02-13-1534-17_Snapshot.txt
C:\Temp13-02-13-1535-55_Snapshot.txt
C:\Temp13-02-13-1537-44_Snapshot.txt
C:\Temp13-02-18-1552-44_Snapshot.txt
C:\Temp13-02-18-1553-21_Snapshot.txt
C:\Temp13-02-18-1556-05_Snapshot.txt
C:\Temp13-02-18-1558-45_Snapshot.txt
C:\Temp13-02-18-1610-06_Snapshot.txt
10 File(s)

Notas

O alvo é necessário apenas para usar os comandos ( %Temp% ), nada é realmente copiado devido a /L

Ambos os comandos demoraram alguns segundos para serem executados com as exclusões listadas.

    
por 06.03.2013 / 19:07
2

Como alternativa, se você não quiser usar um software de terceiros, você pode fazer isso por linha de comando.

É meio chato trabalhar com nomes de diretórios que tenham um espaço como C:\Program Files , então não é um script simples, mas aqui está, funcionou para mim no Windows 7:

@echo off
for /f "tokens=*" %%A in ('dir /b /ad C:\') do (
    if "C:\%%A"==%2 (
        echo Not scanning %2
    ) else (
        dir /s /b "C:\%%A\%1"
    )
)

Uso: file.bat file_to_be_searched.extension "C:\directory\not\to\search"

Observe o "" no diretório, você deve usá-lo para o script funcionar.

O que isto faz é: Para cada linha (todos os caracteres) da saída do comando dir /b /ad C:\ , que lista os diretórios em C:\ , do:

Se C:\directory for your_directory , não a examine. Senão, procure o arquivo que você especificou.

Exemplo (eu nomeei o script search.bat e coloquei um arquivo chamado a.txt em C:\Program Files )

C:\Users\XXXX\Desktop>search.bat a.txt "C:\Windows"
File Not Found
File Not Found
File Not Found
File Not Found
File Not Found
C:\Program Files\a.txt
File Not Found
File Not Found
File Not Found
File Not Found
File Not Found
Not scanning "C:\Windows"

Você pode adaptar o script para que ele não pesquise vários diretórios, adicionando mais if declarações.

P.S .: Esqueci de mencionar, isso só vai procurar a pasta no root, ou seja, C:\ . Se você quiser pesquisar as pastas em um local diferente, terá que adaptar o script. Felicidades.

    
por 06.03.2013 / 18:29
0

Pesquise no Windows do Ditch pelo FileSeek. É freeware. Você pode excluir diretórios, pesquisar o conteúdo de arquivos, etc. Salve minha pele em várias ocasiões. Vale a pena tentar:

link

    
por 06.03.2013 / 16:04
0

Se quiser um programa, recomendo AgentRansack da MythicSoft. É grátis, rápido e poderoso, com uma pequena pegada.

    
por 06.03.2013 / 16:56
0

Uma maneira de fazer isso dentro da pesquisa do Windows é usando -folder(C:\Path) . Se o nome da pasta é único (pelo menos no que diz respeito à área que está sendo pesquisada), basta usar o nome da pasta da seguinte forma: -folder(Program Files)

Se você quiser incluir as subpastas dentro dessa pasta, use -foldername:(C:\Path)

Veja aqui para mais informações. Eu testei isso no Windows 7 e funciona. Não tenho certeza sobre outras versões.

    
por 05.06.2014 / 18:12