Maneira fácil de verificar quais arquivos estão faltando

0

Eu tenho 2 discos rígidos, copiei tudo de um disco rígido para outro, mas alguns arquivos não foram copiados porque estavam corrompidos. Existe uma maneira fácil de verificar quais arquivos de um disco rígido não estão em outro?

    
por Baibro 19.11.2015 / 08:37

2 respostas

3
robocopy sourcedriveletter: destinationdriveletter: /MIR /LOG:logfilename.txt /TEE /L

Robocopy é uma ferramenta de linha de comando embutida no Windows. Você pode verificar as opções abrindo um prompt cmd (para este propósito, provavelmente como admin, eu suponho) e digitando robocopy /? or robocopy /? > %USERPROFILE%\desktop\robocopyoptions.txt se você quiser uma versão de arquivo de texto do documento de ajuda.

No meu exemplo acima, /MIR significa "espelho" e duplica "fonte" em "destino" e exclui qualquer coisa em "destino" que não esteja em "origem".

/log: logs para um arquivo, /TEE saídas para o console, bem como o arquivo de log.

O comando final /L define apenas como lista e não copia ou exclui arquivos.

O log mostrará muito claramente quais arquivos na origem não existem no destino.

É claro que recomendo enfaticamente que você examine primeiro os documentos de ajuda para garantir que meu exemplo esteja correto.

    
por 19.11.2015 / 16:39
2

feedback do método OP: excel não funcionou para ele, o método Matlab não foi testado Eu tenho uma solução muito deselegante, mas acho que faz o trabalho (supondo que você tenha excel). Só funciona se o número de nomes de arquivos se encaixa no excel. (o excel tem um número máximo limitado de linhas: 1.048.576).

Vá para cmd (suponho que você esteja no Windows). Mude o diretório para a primeira unidade. Tipo:

dir /s/b/o:gn > drive1.txt

Faça o mesmo para a segunda unidade, mas altere o nome do arquivo txt.

Eu peguei a linha cmd de: link .

Copie as duas saídas no Excel (assumindo 2007 ou mais recente). A opção mais fácil que conheço é a seguinte:

  • Selecione as colunas que contêm as saídas cmd.
  • No separador de dados na ordenação & Filtrar grupo, clique em Avançado.
  • Na caixa de diálogo Filtro avançado, siga um destes procedimentos:
    • Para filtrar o intervalo de células ou tabela no lugar, clique em Filtrar a lista, no local.
    • Para copiar os resultados do filtro para outro local, faça o seguinte:
      • Clique em Copiar para outro local.
      • Na caixa Copiar para, insira uma referência de célula.
  • Como alternativa, clique na imagem do botão Recolher caixa de diálogo para ocultar temporariamente a caixa de diálogo, selecionar uma célula na planilha e, em seguida, pressionar a imagem do botão Expandir caixa de diálogo.
  • Marque a caixa de seleção Somente registros exclusivos e clique em OK.
  • Os valores exclusivos do intervalo selecionado são copiados para o novo local. Os dados originais não são afetados.

Desta forma, você deve ter uma lista de todos os nomes de arquivos exclusivos, que é o mesmo que uma lista de todos os nomes de arquivos que não foram copiados.

O procedimento do Excel foi tirado de: link

Como alternativa, você pode usar o comando cmd no Matlab.

O comando no Matlab poderia ser:

DosCommand=sprintf('%s %s','dir /    B',directory);
    [status, cmdout]=dos(DosCommand);
end
Filenames = strread(cmdout,'%s'); 

Em seguida, execute:

NonCopiedFilenames = 

A(sum(bsxfun(@eq, A(:), A(:).'))==1);

O truque de valores exclusivos foi copiado de: link

    
por 19.11.2015 / 09:18