Mova arquivos de várias pastas para o diretório pai com o prompt de comando

8

Eu tenho vários arquivos .rar em várias pastas como esta:

C:\Docs\Folder1\rarfile1-1.rar
C:\Docs\Folder1\rarfile1-2.rar
C:\Docs\Folder1\rarfile1-3.rar  

C:\Docs\Folder2\rarfile2-1.rar
C:\Docs\Folder2\rarfile2-2.rar
C:\Docs\Folder2\rarfile2-3.rar  

C:\Docs\Folder3\rarfile3-1.rar
C:\Docs\Folder3\rarfile3-2.rar
C:\Docs\Folder3\rarfile3-3.rar  

Quero mover todos os arquivos .rar para o diretório pai 'C: \ Docs'. Eu tenho muito mais que 3 pastas, então estava pensando em criar um arquivo em lotes ou algo assim. Quais seriam os comandos para fazer isso?
obrigado

usuario
fonte
Procurei um problema semelhante e achei útil essa resposta .
Lalthomas

Respostas:

15

Acabei de criar um aplicativo de linha de comando que faz exatamente isso (além de mostrar algumas estatísticas) e procurei ver se alguém estava tentando fazer isso para que eu pudesse compartilhá-lo e evitar que alguém precisasse descobrir.

Foi muito divertido escrever. Requer o .NET 3.5, funciona a partir da linha de comando, chame com -h ou nenhum parâmetro para uso.

MoveFilesUpFromSubfolders
(código fonte)

Feedback um plus! :)

Ah, e captura de tela de como fica:

                               

Camilo Martin
fonte
3
+1 Escrever um programa para resolver o problema de alguém. Isso é compromisso!
Li-aung Yip 17/03/2012
11
@ Li-aungYip Muito obrigado pelo elogio! Além disso, devido às circunstâncias, não tenho mais o disco rígido onde costumava codificar no tempo em que fiz isso (tendo perdido isso e muitas outras coisas), por isso estou muito feliz em vê-lo aqui e baixá-lo agora ( parabéns pelo Mediafire por armazená-lo por tanto tempo com poucos downloads, e tenho sorte de não o armazenar no Megaupload!). Então, se você colocar isso em perspectiva, quanto mais você dá, mais você recebe :)
Camilo Martin
Ótimo trabalho! +1 e 50 repetições. Eu sei que isso tem 4,5 anos, mas isso foi muito útil para mim porque baixei mais de 90 arquivos que estavam em mais de 90 pastas. Isso me ajudou a colocar todos os arquivos em sua pasta pai.
A única crítica que tenho é que, quando tentei usar isso, um erro sobre um problema com a pasta continuava aparecendo e não indicava o porquê. Somente usando o comando -t, eu pude determinar por que havia um problema com a pasta (porque ela foi nomeada com mais de 250 caracteres). Isso é facilmente contornado, destacando todas as pastas e renomeando uma delas (o restante será anexado com um número).
@ edmastermind29 Estou super feliz em saber que um código tão antigo meu tem sido útil para alguém ainda. Acredite ou não, o arquivo de código-fonte foi retirado do mediafire por ser sinalizado automaticamente como violação de direitos autorais (o que é bastante absurdo, considerando que não há vídeo ou áudio, mas apenas texto), e eu não tenho noção de como fiz isso . Se for de alguma utilidade, nesse momento eu escreveria uma linha de base para lidar com um problema como esse, algo como mv dir/sub/* dir; rmdir dir/subum loop.
Camilo Martin
7

Faça uma tentativa:

for /d %f in (docs\*) do (
pushd %f
move .\*.* ..
popd
)
BillP3rd
fonte
Você pode explicar isso um pouco mais?
Nick
@ Nick: Para todas as pastas docsinseridas, insira a pasta. Mova todos os arquivos da pasta atual para a pasta pai. Retorne à pasta pai.
precisa saber é o seguinte
O pushde popdnão é realmente necessário. cdfuncionaria muito bem.
Hello71
Conforme explicado pelo Hello71. Além disso, poderia ser feito com uma única linha:for /d %f in (docs\\*) do move %f\\*.* docs
BillP3rd
11
NB Nem o original acima nem a linha única lidam adequadamente com nomes de arquivos duplicados.
precisa saber é o seguinte
5

Bem, a resposta para sua pergunta é muito simples. Não é um script, mas serve.

Presumi que você estivesse executando o Windows.

  • Coloque-se no diretório C: \ Docs
  • Pressione F3 (pesquisa)
  • Procure por * .rar
  • Pressione Crtl + A
  • Pressione Ctrl + X
  • Feche a janela de pesquisa e, novamente, vá para C: \ Dosc no explorer
  • Cole os arquivos cortados pressionando CTRL + V.
integratorIT
fonte
+1 para uma solução simples e agradável, sem scripts ou terceiros.
Syakur Rahman
+ 1 método melhor e mais rápido A +++
Sickest 6/17
3

A sucção funcionou para mim nessa questão.

O Suction é um aplicativo gratuito e portátil que ajudará a organizar as pastas bagunçadas rapidamente.

A sucção funciona consolidando os diretórios pai. Por exemplo, se o diretório de imagens estiver cheio de pastas desnecessárias, arraste a pasta para a interface de sucção e eliminará as pastas, deixando apenas os arquivos. Isso também é útil para pessoas que baixam muitas coisas.

Raystafarian
fonte
0

Isso deve funcionar:

move C:\Docs\*\* C:\Docs
Hello71
fonte
2
Eu recebo o erro: o nome do arquivo, o nome do diretório ou a sintaxe do rótulo do volume está incorreta.
Nick
O ** não funcionou
Nick
Você precisa certificar-se de inserir o `\`, e que não está sendo escapado pelo seu editor de texto.
precisa saber é o seguinte
A emissão deste comando a partir de um prompt do CMD (no Windows 7) gera o erro observado por Nick.
BillP3rd
Isso não vai funcionar. * não funciona corretamente para pastas. Tenho que interromper os programas de terceiros como o Total Commander.
surfasb
0

Exemplos de cópia ou movimentação de arquivos de subdiretórios para um único diretório

para / f "tokens = *"% a em ('dir "C: \ Temp \ Epub * .epub" / s / b') copie / y "% a" C: \ Temp \ epub.

para / f "tokens = *"% a em ('dir "C: \ Temp \ Epub * .epub" / s / b') mova / y "% a" C: \ Temp \ epub

o "tokens = * é para capturar caminhos com caracteres especiais

user340812
fonte