例如,假设我具有以下文件夹层次结构:
Folder1
File1
Folder2
File2
Folder3
File3
Folder4
File4
我想执行一些导致以下结果的命令:
Folder1
File1
File2
File3
File4
或类似的东西。我对Windows不太熟悉,所以我希望在回答中尽可能多地了解细节。
例如,假设我具有以下文件夹层次结构:
Folder1
File1
Folder2
File2
Folder3
File3
Folder4
File4
我想执行一些导致以下结果的命令:
Folder1
File1
File2
File3
File4
或类似的东西。我对Windows不太熟悉,所以我希望在回答中尽可能多地了解细节。
Answers:
绝对最简单的方法是进入公用根文件夹并搜索所有文件(即搜索*)。找到所有文件后,标记所有文件,然后按Ctrl + X并再次导航到公用根文件夹。现在按Ctrl + V将所有文件粘贴到根文件夹中。完成后,删除所有子目录。
我不知道这是否可以作为批处理工作来完成。
最后,当我需要展平大型分层结构(在我的情况下为png)时,我使用了这种powershell方法:
Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\
Windows exe: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))}
或批处理(如上所述)
或如上所述手动搜索,剪切和粘贴
有很多方法,根据您的技能和爱好,您可以选择其中任何一种,并根据需要进行细化。
完成上述操作后,您可能需要此“ 删除空目录 ”
如果您只需要不时手动平整dir,Total Commander是完美的选择。
在Total Commander中:转到您要展平的目录。在菜单中,单击命令>分支视图。您会看到所有内容都变平了,可以将其移动/复制到另一个文件夹。
如果您需要修改文件名:在展平视图中选择所有文件,在菜单中转到文件>多重重命名工具。在这里,您可以使用“重命名掩码”从路径到实际文件名添加一些信息,您只需要在此处使用插件标签/按钮,搜索和替换功能以及小傻瓜按钮,即可在其中对文件名进行最后编辑文本编辑器。听起来可能很复杂,但实际上是IMO最简单的方法:)
对于那些不太喜欢技术的人,可以使用命令行选项非常简单。
在文件中,放置以下内容:
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个音乐文件的文件夹。奇迹般有效。
您可以在https://technet.microsoft.com/zh-cn/library/bb490909.aspx中找到FOR命令行实用程序的选项。
使用批处理脚本(不在我的头上):
查找FOR命令
第一行将所有文件从子目录上移到根目录。第二行删除子文件夹
for /f %f in ('dir "c:\folder\*" /s/b/a-d') do if not %~ff"=="c:\folder" move "%f" "c:\folder"
for /f %f in ('dir "c:\folder\*" /s/b/ad') do if not "%~ff"=="c:\folder" rd /s/q "%f"
嗨,您还可以使用xxcopy(www.xxcopy.com)工具,将其xcopy放在steriods(排序)上。使用此工具,您可以将文件夹中的文件“展平”到一个文件夹中。
c:> xxcopy / source-folders / flatten / SG
只需阅读以下链接:http : //www.xxcopy.com/xxcopy16.htm
干杯。