¿Cómo puedo aplanar una carpeta en Windows 7, suponiendo que todos los nombres de archivos sean diferentes?

¿Cómo puedo aplanar una carpeta en Windows 7, suponiendo que todos los nombres de archivos sean diferentes?

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

oPotencia Shell

(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.

  1. Cree un archivo en algún lugar llamado "flatten.cmd"
  2. Abra ese archivo en el Bloc de notas
  3. En el archivo coloque lo siguiente:

    FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
    
  4. Reemplace "{SourcePath}" con la carpeta que desea aplanar. En su caso "c:\Carpeta1"

  5. 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
    
  6. 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
  7. 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.

información relacionada