
Por exemplo, digamos que eu tenha a seguinte hierarquia de pastas:
Folder1
File1
Folder2
File2
Folder3
File3
Folder4
File4
Quero executar algum comando que resulte em:
Folder1
File1
File2
File3
File4
ou algo semelhante. Não estou muito familiarizado com o Windows, então gostaria de receber o máximo de detalhes possível na resposta.
Responder1
A maneira mais fácil é entrar na pasta raiz comum e fazer uma busca por todos os arquivos (ou seja, procurar por *). Quando todos os arquivos forem encontrados, marque todos os arquivos, pressione Ctrl + X e navegue novamente até a pasta raiz comum. 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 como um trabalho em lote.
Responder2
Usei essa abordagem do PowerShell no final, quando precisei nivelar uma grande estrutura hierárquica (no meu caso, pngs):
Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\
Responder3
exe do Windows: http://en.sourceforge.jp/projects/sfnet_flatfolder/
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 usarDiretório Opus
(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}
ouLote(como acima mencionado)
ou a busca manual, recortar e colar conforme mencionado acima
Há muitas maneiras, dependendo de suas habilidades e inclinações, você pode escolher qualquer uma delas e refinar de acordo com suas necessidades.
Você pode precisar dissoRemover diretórios vaziosapós a operação acima
Responder4
Muito simples, com uma opção de linha de comando para aqueles que não têm muita inclinação técnica.
- Crie um arquivo em algum lugar chamado "flatten.cmd"
- Abra esse arquivo no Bloco de Notas
No arquivo coloque o seguinte:
FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
Substitua "{SourcePath}" pela pasta que você deseja nivelar. No seu caso "c:\Folder1"
Substitua "{Destino"} pela pasta para a qual deseja mover os arquivos. No seu caso também "c:\Folder1". O código agora deve ficar assim:
FOR /R c:\Folder1 %%G IN (*.mp3) DO move "%%G" c:\Folder1
Abra uma janela de linha de comando. Pode fazer isso de várias maneiras, mas é rápido:
- Clique no botão Iniciar
- Clique em Todos os Programas
- Clique em Acessórios
- Clique em Prompt de Comando
Na janela da linha de comando, digite:
cd {folder where you put the flatten.cmd file} flatten
E isso vai bastar (Windows 8+). Acabei de fazer isso para compactar uma pasta de 10.000 arquivos de música. Funciona como um encanto.
Você pode encontrar as opções para o utilitário de linha de comando FOR emhttps://technet.microsoft.com/en-us/library/bb490909.aspx.