Como posso achatar uma pasta no Windows 7, assumindo que todos os nomes de arquivos são diferentes?

18

Por exemplo, digamos que eu tenha a seguinte hierarquia de pastas:

Folder1
   File1
   Folder2
      File2
   Folder3
      File3
      Folder4
         File4

Eu quero executar algum comando que resulte em:

Folder1
   File1
   File2
   File3
   File4

ou algo similar. Eu não estou muito familiarizado com o Windows, então gostaria de receber o máximo de detalhes possível na resposta.

    
por Der Hochstapler 31.10.2012 / 03:03

7 respostas

30

A maneira mais fácil é inserir a pasta raiz comum e pesquisar todos os arquivos (por exemplo, pesquisar *). Quando todos os arquivos forem encontrados, marque todos os arquivos, pressione Ctrl + X e navegue até a pasta raiz comum novamente. Agora pressione Ctrl + V para colar todos os arquivos na pasta raiz. Quando terminar, exclua todos os subdiretórios.

Não sei se isso pode ser feito em lote.

    
por 31.10.2012 / 07:19
13

Eu usei essa abordagem do powershell no final quando precisei achatar uma grande estrutura hierárquica (no meu caso, pngs):

Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\
    
por 12.12.2013 / 13:52
4

windows exe: link

ou AHK:

fileselectfolder,MyFold,::{20d04fe0-3aea-1069-a2d8-08002b30309d}
SetWorkingDir, %MyFold%
loop, *.*,0,1
{
  parentpath := RegExReplace(A_LoopFileDir,"\","-")
  ;StringReplace, parentpath, A_LoopFileDir, \,-,All
  newname = %parentpath%-%A_LoopFileName%
  ;msgbox %newname%
  If a_loopfiledir <>
    filemove, %a_loopfilefullpath%,%newname%
}

loop, %myfold%\*.*,2,1
  fileremovedir, %a_loopfilefullpath%,1

exitapp

ou use o Diretório Opus

ou PowerShell

(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}

ou Lote (como mencionado acima)

ou a pesquisa manual, recortar e colar como mencionado acima

Existem muitas maneiras, dependendo de suas habilidades e inclinações, você pode escolher qualquer uma delas e aperfeiçoar de acordo com suas necessidades.

Você pode precisar deste Remover diretórios vazios após a operação acima

    
por 22.07.2013 / 13:44
3

Se você precisar apenas achatar o diretório manualmente de tempos em tempos, o Total Commander será perfeito.

No Total Commander: Ir para o seu dir você quer achatar. No menu, clique em Comandos > Visão de ramificação . E você vê tudo achatado, você pode mover / copiá-lo para outra pasta.

Se você precisa mexer um pouco com nomes de arquivos: Selecione todos os arquivos na visualização simplificada, no menu vá para Arquivos > Ferramenta Multi-Rename . Aqui você pode adicionar algumas informações do caminho para nomes de arquivos reais usando "Renomear máscara", você só precisa usar o tag / botão do plugin, search & substituir recurso eo botão pequeno foolder, que permite fazer algumas últimas edições para nomes de arquivos no editor de texto. Pode parecer complicado, mas realmente a maneira mais fácil IMO:)

    
por 10.09.2013 / 13:38
3

Bastante simples com uma opção de linha de comando para aqueles que não são tecnicamente inclinados.

  1. Crie um arquivo em algum lugar chamado "flatten.cmd"
  2. Abra esse arquivo no Bloco de notas
  3. No arquivo, coloque o seguinte:

    FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
    
  4. Substitua "{SourcePath}" pela pasta que você deseja nivelar. No seu caso "c: \ Folder1"

  5. Substitua "{Destino"} pela pasta para a qual você deseja que os arquivos sejam movidos. No seu caso também "c: \ Folder1". O código deve agora parecer:

    FOR /R c:\Folder1 %%G IN (*.mp3) DO move "%%G" c:\Folder1
    
  6. Abra uma janela de linha de comando. Pode fazer isso de várias maneiras, mas isso é rápido:

    • Clique no botão Iniciar
    • Clique em Todos os Programas
    • Clique em Acessórios
    • Clique em Prompt de comando
  7. Na janela da linha de comando, digite:

    cd {folder where you put the flatten.cmd file}
    flatten
    

E isso vai funcionar (Windows 8+) Eu acabei de fazer isso para achatar uma pasta de 10.000 arquivos de música. Funciona como um encanto.

Você pode encontrar as opções do utilitário de linha de comando FOR no link .

    
por 03.01.2018 / 05:49
1

usando um script em lote (fora do topo da minha cabeça):

Procure o comando FOR

A primeira linha move todos os arquivos dos subdiretórios até a raiz A segunda elimina as subpastas

for /f %f in ('dir "c:\folder\*" /s/b/a-d') do if not %~ff"=="c:\folder" move "%f" "c:\folder"
for /f %f in ('dir "c:\folder\*" /s/b/ad') do if not "%~ff"=="c:\folder" rd /s/q "%f" 
    
por 31.10.2012 / 03:14
1

Olá, você também pode usar a ferramenta xxcopy (www.xxcopy.com), sua xcopy em steriods (sort-of). Com esta ferramenta você pode "achatar" os arquivos em pastas em uma pasta.

c: > xxcopy / source-folders / flatten / SG

Apenas leia este link: link

Felicidades.

    
por 24.04.2015 / 17:29

Tags