Mover todos os arquivos do tipo para uma nova pasta no windows 7

4

Alguém pode ajudar nisso.

Eu tenho arquivos mp3 em toda a loja e, portanto, um monte de duplicatas.

O que eu preciso é de uma função de linha de comando que irá mover todos os arquivos do tipo mp3 para uma nova pasta. Não me preocupo se a estrutura dos arquivos na nova pasta é mantida ou não.

Eu poderia facilmente copiar usando copy c: *. mp3 / sc: \ mp3 por exemplo, mas devido à quantidade de arquivos que eu tenho, eu ficaria sem espaço em disco copiando-os, daí a necessidade de mover.

Obrigado

    
por Derek 06.08.2012 / 13:35

4 respostas

5

Experimente este comando a partir da pasta de nível superior, onde você tem arquivos mp3.

forfiles /M *.mp3 /C "cmd /c move @file C:\music"

Observe que, se você tiver arquivos com nomes duplicados, movê-los para uma única pasta não é a coisa certa a fazer. Isso causará perda de dados.

Há também uma maneira de mover todos os arquivos correspondentes aos critérios dentro dos subdiretórios com o sinalizador /S :

forfiles /S /M *mp3 /C "cmd /c move @files C:\music

Isso irá pesquisar recursivamente por todas as pastas em seu diretório atual

Referência: comando do Windows Forfiles

    
por 06.08.2012 / 15:05
1

Como executado a partir da linha de comando:

for /r %M in (*.mp3) do @if /I "%~dpM" neq "c:\temp\mp3 files\" @echo move /-Y "%M" "c:\temp\mp3 files\"

Isso simplesmente ecoa os comandos na tela, por isso é seguro executar e ver se ela atende às suas necessidades. Ele irá iniciar a partir do diretório atual, portanto, se você quiser enumerar tudo, execute-o em c:\ .
A nomeação do seu diretório de destino é, naturalmente, sua escolha - mas certifique-se de que existe! Você também pode querer colocá-lo em uma variável ou como parâmetro em lote para evitar erros de digitação. Quando tiver 100% de certeza de que a saída está correta, basta remover @echo e, em seguida, testá-la novamente com poucos arquivos / caminhos (certifique-se de incluir aqueles com espaços e alguns caracteres incomuns)

Poucas palavras de cautela:
1. Você disse que você tem dups. Eu coloquei / -Y como uma proteção, então mover um arquivo com o mesmo nome que já foi movido irá parar este script esperando por você para confirmar. Você pode sobrescrever isso com a opção / Y, mas corre o risco de sobrescrever mais do que desejava!
2. Isso é dificilmente reversível ou irreversível (se você tiver duplicatas falsas - arquivos diferentes com o mesmo nome). Faça um backup antes de começar!
3. Veja o que você tem antes de se mover - isso lhe dará uma lista de todos os seus mp3s, bem formatados com nome, tamanho e diretório:
for /r %M in (*.mp3) do @echo "%~nxM", "%~zM", "%~dpM" >>filelist.txt
Use planilha para classificar e inspecionar.

Notas:
a) Na verdade, você poderia remover essa if parte completamente, como mover um arquivo para si mesmo, mas eu acho isso confuso :-)
b) se você quiser colocá-lo em um lote substitua o único % com o dobro %%

    
por 06.08.2012 / 15:26
1

Se não precisar ser uma operação de linha de comando, você pode simplesmente usar a caixa de pesquisa do explorador de arquivos. Abra C :, procure *.mp3 , pressione Ctrl + A e mova os arquivos. Você será perguntado sobre duplicatas.

    
por 08.03.2013 / 10:31
0

Suponho que isso seja para backup ou similar. Se assim for, eu fiz um arquivo bat e tarefas agendadas é executado uma vez por semana.

Tente criar um arquivo bat.

Abra o bloco de notas e digite

xcopy "file location" "file destination" /i /e /y /z

por exemplo

xcopy "c:\allmusic\mp3\" "e:\music\" /i /e /y /z

Salve o arquivo como .bat (por exemplo, "copyFiles.bat")

Você pode ter várias linhas, mas uma por linha. EG

xcopy "c:\allmusic\mp3\" "e:\music\" /i /e /y /z
xcopy "c:\allmusic\wav\" "e:\music\" /i /e /y /z
xcopy "c:\allmusic\wmv\" "e:\music\" /i /e /y /z

Por favor, note que os /i /y /e e /z têm significados que podem ser desejáveis ou não (como sobrescrever), veja uma lista aqui:

/A Copies only files with the archive attribute set, doesn't change the attribute.  
/M Copies only files with the archive attribute set, turns off the archive attribute.  
/D:m-d-y Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time.  
/EXCLUDE:file1[+file2][+file3]... Specifies a list of files containing strings. When any of the strings match any part of the absolute path of the file to be copied, that file will be excluded from being copied. For example, specifying a string like \obj\ or .obj will exclude all files underneath the directory obj or all files with the .obj extension respectively.  
/P Prompts you before creating each destination file.  
/S Copies directories and subdirectories except empty ones.  
/E Copies directories and subdirectories, including empty ones. Same as /S /E. May be used to modify /T.  
/V Verifies each new file.  
/W Prompts you to press a key before copying.  
/C Continues copying even if errors occur.  
/I If destination does not exist and copying more than one file, assumes that destination must be a directory.  
/Q Does not display file names while copying.  
/F Displays full source and destination file names while copying.  
/L Displays files that would be copied.  
/H Copies hidden and system files also.  
/R Overwrites read-only files.  
/T Creates directory structure, but does not copy files. Does not include empty  directories or subdirectories. /T /E includes empty directories and subdirectories.  
/U Copies only files that already exist in destination.  
/K Copies attributes. Normal Xcopy will reset read-only attribute  
/N Copies using the generated short names.  
/O Copies file ownership and ACL information.  
/X Copies file audit settings (implies /O).  
/Y Suppresses prompting to confirm you want to overwrite an existing destination file.  
/-Y Causes prompting to confirm you want to overwrite an existing destination file.  
/Z Copies networked files in restartable mode.   

Você também pode usar "mover", que é semelhante ao recortar e colar

por exemplo

mova "fonte" "destino"

move "c:\allmusic\mp3\" "e:\music\" /i /e /y /z
move "c:\allmusic\wav\" "e:\music\" /i /e /y /z
move "c:\allmusic\wmv\" "e:\music\" /i /e /y /z

EDITAR

Para copiar várias pastas fazendo um loop, tente

for /f %%f in ('dir /b c:\')  do (
cd\
cd %%f
copy *.mp3 "e:\music"

for /f %%g in ('dir /b %%f')  do (
cd\
cd %%g
copy *.mp3 "e:\music"


for /f %%h in ('dir /b %%g')  do (
cd\
cd %%h
copy *.mp3 "e:\music"
pause
)
)
)

Note que isso faz 3 níveis de subpastas

    
por 06.08.2012 / 13:41