.bat

ola…

eu preciso realiazar uma busca em todo o computador, buscando um arquivo, para saber o caminho que cada um esta e saber qual é o mais novo deles.
pesquisei muito sobre os codigos para buscar arquivos e o maximo que consegui foi realizar uma busca com o tempo de 1 min e 40 sec.
Tentando outros caminhos, para reduzir esse tempo, pensei em um arquivo .bat com o codigo “DIR *.AAA /S > C:\CPT8001\ATUALIZA\ListAAA.txt” ele me gera um arquivo contendo todos os arquivos que quero em 10 sec.

Porém, depois de gerar o arquivo, preciso buscar qual é o mais novo dentro dele.

Minha dificuldade, é que o codigo não espera o termino do .bat, para acessa-lo e verificar o mais novo deles

Tem alguma forma de saber quando o .bat foi encerrado, para ai sim, dar sequencia no codigo???

A classe Process tem o método waitFor.

Leia este programa e o entenda. Neste caso, escrevi um programa que acha a DLL mais nova do diretório c:\program files\java\jre6.

import java.util.*;
import java.io.*;
import java.util.regex.*;

class ListarArquivosRecursivamente {
    private void listar (SortedSet<File> files, File dirOrFile, Pattern pat) {
        if (dirOrFile.isFile()) {
            if (pat.matcher(dirOrFile.getName()).matches()) {
                 files.add (dirOrFile);
            }
        } else if (dirOrFile.isDirectory()) {
            for (File f : dirOrFile.listFiles()) {
                listar (files, f, pat);
            }
        }
    }
    public SortedSet<File> listarMaisNovos (File dir, Pattern pat) {
        
        SortedSet<File> files = new TreeSet<File>(new Comparator<File>() {
            public int compare (File f1, File f2) {
            // Comparar por data (decrescente), depois por nome (crescente)
                int ret = Long.valueOf (f1.lastModified()).compareTo (Long.valueOf (f2.lastModified()));
                if (ret != 0) return -ret; // -ret inverte o sentido da comparação
                return f1.compareTo (f2); // compara por path
            }
        });
        listar (files, dir, pat);
        return files;


    }
    public static void main (String[] args) {
        ListarArquivosRecursivamente lar = new ListarArquivosRecursivamente();
        SortedSet<File> arquivos = lar.listarMaisNovos (new File ("C:\Program Files\Java\jre6"), Pattern.compile (".*\.dll", Pattern.CASE_INSENSITIVE));
        System.out.println (arquivos);
        System.out.println ("O arquivo mais novo: " + arquivos.first());
        System.out.println ("A data: " + new Date (arquivos.first().lastModified()));
    }
}

Perfeito… obrigado.