将一个大文件夹中的文件分组为几个较小的文件夹的程序?

将一个大文件夹中的文件分组为几个较小的文件夹的程序?

我们这里的系统最近硬盘坏了。我可以使用恢复软件从中恢复大部分文件,但大多数情况下无法检索文件夹名称。相反,它将大部分内容(大约 200,000 个文件!)都转储到一个文件夹中。这对 Windows 文件系统来说就是致命的。

有人能推荐一个好的(最好是免费的)程序来自动将这些文件分类到新文件夹中吗?

在这种情况下,文件至少已经按类型分组。我原本想按名称或创建/修改日期然后按名称排序。

答案1

取决于你想如何对它们进行排序。它们都是不同的类型吗?命令行对此非常方便。

例子:

C:\>mkdir JPEGS writtendocs 电子表格
C:\>cd 大文件夹
C:\huge_folder\>移动 *.jpg ../JPEGS
C:\huge_folder\>移动 *.doc ../writtendocs
C:\huge_folder\>移动 *.xls ../电子表格

有一个免费的图形工具可以执行类似的操作,名字很合适文件排序,它可以帮助您按文件名、年龄和大小进行排序:

替代文本

答案2

贝尔维德来自生活黑客编辑器可能会有用。

替代文本

使用 Belvedere 的友好界面创建高级规则,根据文件名称、扩展名、大小、创建日期等来移动、复制、删除、重命名或打开文件。

答案3

这是一个完全未经测试的 :) perl 脚本,用于根据文件名中的第一个字符进行排序

use File::Copy;

# base directory of where we want to copy files
my $destdir = "destdir";

opendir("dir_to_sort", DH);
my @files = readdir(DH);
closedir(DH);
foreach my $file (@files)
{
   # skip . and ..
   next if $file =~ /^\.$/;
   next if $file =~ /^\.\.$/;

   # This is where you'd figure out where you want to put the file
   # in this example we're just looking at the first char.
   # so a file named "HelloWorld" would be copied to $destdir/H/HelloWorld
   # pull the first char
   $file =~ /^(.).*/;
   my $target_dir = $1;

   mkdir("$destdir/$target_dir") unless -d "$destdir/$target_dir"

   # you could use move instead of copy here
   copy($file, "$destdir/$target_dir/$file");
}

真的,这完全没有经过测试,如果你因为运行这个而失去了一切,不要抱怨我没有警告你。:)

相关内容