How can I flatten out a folder in Windows 7, assuming all file names are different?
For example, say that I have the following folder hierarchy:
Folder1
File1
Folder2
File2
Folder3
File3
Folder4
File4
I want to perform some command that results in:
Folder1
File1
File2
File3
File4
or something similar. I'm not very familiar with Windows, so I would appreciate as much detail as possible in the answer.
Solution 1:
The absolute easiest way is to enter the common root folder and do a search for all files (i.e. search for *). When all files are found, mark all files, press Ctrl + X and navigate to the common root folder again. Now press Ctrl + V to paste all the files into the root folder. When finished, delete all subdirectories.
I do not know if this can be done as a batch job.
Solution 2:
I used this powershell approach in the end when I needed to flatten a large hierarchical structure (in my case pngs) :
Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\
Solution 3:
windows exe: http://en.sourceforge.jp/projects/sfnet_flatfolder/
or 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
or use Directory Opus
or Powershell
(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}
or Batch (as mentioned above)
or the manual search, cut and paste as mentioned above
There are many ways, depending on your skill and inclinations you can choose any of these, and refine according to your needs.
You might need this Remove Empty Directories after the above operation