У нас есть система, в которой недавно произошел сбой жесткого диска. Я мог использовать программное обеспечение для восстановления, чтобы извлечь из него большинство файлов, но по большей части он не смог получить имена папок. Вместо этого он сбрасывал почти все (около 200 000 файлов!) в одну папку. Это смерть для файловой системы Windows.

Кто-нибудь может порекомендовать хорошую (желательно бесплатную) программу для автоматической сортировки этих файлов в новые папки?

В этом случае файлы, по крайней мере, уже сгруппированы по типу. Я думал сортировать по имени или дате создания / изменения, а затем по имени.

3 ответа3

3

Зависит от того, как вы хотите их отсортировать. Это все разные типы? Командная строка очень удобна для этого.

пример:

C:\>mkdir JPEGS writtendocs spreadsheets
C:\>cd huge_folder
C:\huge_folder\>move *.jpg ../JPEGS
C:\huge_folder\>move *.doc ../writtendocs
C:\huge_folder\>move *.xls ../spreadsheets

Существует бесплатный графический инструмент для выполнения аналогичных операций, который называется « Сортировка файлов» и может помочь вам в сортировке по имени, возрасту и размеру файла:

альтернативный текст

1

Бельведер из редактора Lifehacker может быть полезным.

альтернативный текст

Используйте дружественный интерфейс Belvedere для создания расширенных правил для перемещения, копирования, удаления, переименования или открытия файлов на основе их имени, расширения, размера, даты создания и т.д.

0

Вот совершенно непроверенный сценарий 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");
}

На самом деле, это абсолютно не проверено, если вы все проиграете, не жалуйтесь, я вас не предупреждал. :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .