
Por ejemplo, digamos que tengo la siguiente jerarquía de carpetas:
Folder1
File1
Folder2
File2
Folder3
File3
Folder4
File4
Quiero realizar algún comando que resulte en:
Folder1
File1
File2
File3
File4
o algo similar. No estoy muy familiarizado con Windows, por lo que agradecería la mayor cantidad de detalles posibles en la respuesta.
Respuesta1
La forma más sencilla es ingresar a la carpeta raíz común y buscar todos los archivos (es decir, buscar *). Cuando se encuentren todos los archivos, márquelos, presione Ctrl + X y navegue nuevamente hasta la carpeta raíz común. Ahora presione Ctrl + V para pegar todos los archivos en la carpeta raíz. Cuando termine, elimine todos los subdirectorios.
No sé si esto se puede hacer por lotes.
Respuesta2
Utilicé este enfoque de PowerShell al final cuando necesitaba aplanar una estructura jerárquica grande (en mi caso, pngs):
Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\
Respuesta3
ejecutable de windows: http://en.sourceforge.jp/projects/sfnet_flatfolder/
o 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
o usarDirectorio Opus
(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}
oLote(como se ha mencionado más arriba)
o la búsqueda manual, cortar y pegar como se mencionó anteriormente
Hay muchas formas, dependiendo de tus habilidades e inclinaciones puedes elegir cualquiera de ellas y perfeccionarlas según tus necesidades.
Puede que necesites estoEliminar directorios vacíosdespués de la operación anterior
Respuesta4
Bastante simple con una opción de línea de comandos para aquellos que no tienen muchas inclinaciones técnicas.
- Cree un archivo en algún lugar llamado "flatten.cmd"
- Abra ese archivo en el Bloc de notas
En el archivo coloque lo siguiente:
FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
Reemplace "{SourcePath}" con la carpeta que desea aplanar. En su caso "c:\Carpeta1"
Reemplace "{Destino"} con la carpeta a la que desea mover los archivos. En su caso también "c:\Folder1". El código ahora debería verse así:
FOR /R c:\Folder1 %%G IN (*.mp3) DO move "%%G" c:\Folder1
Abra una ventana de línea de comando. Puede hacer esto de varias maneras, pero es rápido:
- Haga clic en el botón Inicio
- Haga clic en Todos los programas
- Haga clic en Accesorios
- Haga clic en Símbolo del sistema
En la ventana de la línea de comando, escriba:
cd {folder where you put the flatten.cmd file} flatten
Y eso lo hará (Windows 8+). Acabo de hacerlo para aplanar una carpeta de 10,000 archivos de música. Funciona de maravilla.
Puede encontrar las opciones para la utilidad de línea de comandos FOR enhttps://technet.microsoft.com/en-us/library/bb490909.aspx.