Copie arquivos com uma certa extensão para uma pasta

0

Eu quero encontrar todos os arquivos PDF do computador e colocá-los em uma pasta.

Até agora, tenho isto:

mkdir d:\test
chcp 65001
d:
FOR /f "tokens=*" %%a in ('dir /s /b  *.pdf') DO copy "%%a" d:\test\
c:
FOR /f "tokens=*" %%a in ('dir /s /b  *.pdf') DO copy "%%a" d:\test\
f:
FOR /f "tokens=*" %%a in ('dir /s /b  *.pdf') DO copy "%%a" d:\test\

Por algum motivo, não copia tudo. Em D :, copiou 2126 arquivos de 2400, e em F: copiou 274 de 284.

Alguma idéia de porque alguns arquivos PDF não estão sendo copiados e como posso corrigi-lo?

    
por Psema 01.04.2013 / 00:39

3 respostas

1

Você pode contar os arquivos e verificar se há duplicatas:

md d:\test 2>nul
set /a count=0
set /a dupli=0
for /r "d:\" %%i in (*.pdf) do (
    if not exist "d:\test\%%~nxi" (
        copy "%%~fi" "d:\test\%%~nxi"
        set /a count+=1
    ) else set /a dupli+=1
)
echo %count% files copied,  %dupli% not (duplicate files).

Coloque a pasta de destino em outra unidade para evitar a cópia para si mesma.

    
por 01.04.2013 / 05:15
0

Não tendo muitos detalhes, meu primeiro palpite é que existem nomes de arquivos duplicados. Copiar em um acript não solicitará sobrescrever e pulará o arquivo.

    
por 01.04.2013 / 00:54
0

Eu suspeito que isso acontece porque você não está na pasta certa ao executar o comando FOR.

Executando

D:

apenas muda a unidade, mas não o diretório. Se o último diretório usado da unidade D foi D:\Example , é onde o comando leva você.

Existem três maneiras de corrigir isso:

  • Executar

    D:
    CD \
    

    antes do comando FOR.

  • Executar

    CD /D D:\
    

    antes do comando FOR.

  • Especifique a unidade e o diretório no comando FOR:

    FOR /F "tokens=*" %%A in ('DIR /S /B  D:\*.pdf') DO COPY "%%A" D:\test\
    
por 01.04.2013 / 00:55