例如,假设我有以下文件夹层次结构:
Folder1
File1
Folder2
File2
Folder3
File3
Folder4
File4
我想要执行一些命令,其结果是:
Folder1
File1
File2
File3
File4
或类似的东西。我对 Windows 不太熟悉,因此希望答案尽可能详细。
答案1
最简单的方法是进入公共根文件夹并搜索所有文件(即搜索 *)。找到所有文件后,标记所有文件,按 Ctrl + X 并再次导航到公共根文件夹。现在按 Ctrl + V 将所有文件粘贴到根文件夹中。完成后,删除所有子目录。
我不知道这是否可以作为批处理作业来完成。
答案2
当我需要展平大型层次结构(在我的情况下是 png)时,我最终使用了这个 powershell 方法:
Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\
答案3
Windows 可执行文件: http://en.sourceforge.jp/projects/sfnet_flatfolder/
或 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
或使用目录作品
或者电源外壳
(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}
或者批(正如刚才提到的)
或者如上所述的手动搜索、剪切和粘贴
方法有很多,您可以根据自己的技能和倾向选择其中任何一种,并根据您的需要进行改进。
你可能需要这个删除空目录经过上述操作
答案4
对于那些不太懂技术的人来说,命令行选项相当简单。
- 在某处创建一个名为“flatten.cmd”的文件
- 在记事本中打开该文件
在该文件中,放置以下内容:
FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
将“{SourcePath}”替换为您要平铺的文件夹。在您的例子中为“c:\Folder1”
将“{Destination"} 替换为要将文件移动到的文件夹。在您的例子中,也可以替换为“c:\Folder1”。代码现在应如下所示:
FOR /R c:\Folder1 %%G IN (*.mp3) DO move "%%G" c:\Folder1
打开命令行窗口。有多种方法可以做到这一点,但这种方法很快:
- 单击“开始”按钮
- 点击所有程序
- 点击附件
- 单击命令提示符
在命令行窗口中输入:
cd {folder where you put the flatten.cmd file} flatten
这样就可以了(Windows 8+)我刚刚这样做了,将一个包含 10,000 个音乐文件的文件夹扁平化。效果很好。
您可以在以下位置找到 FOR 命令行实用程序的选项https://technet.microsoft.com/en-us/library/bb490909.aspx。