2

У меня на компьютере много (то есть, более 10 000) документов, которые я хочу организовать по нескольким категориям на основе их имен файлов. Большинство файлов имеют описательные имена файлов, так что их можно легко классифицировать только по их именам.

Я подумал о создании индекса слов, которые появляются в именах файлов (пока я не знаю, как этого добиться), затем просмотр индекса и выбор наиболее подходящих слов (это будет сделано вручную), которые станут Названия категорий для моих файлов. Затем я хочу автоматически создавать папки на основе этих имен категорий и перемещать файлы (автоматически) в эти папки. Когда файл принадлежит нескольким категориям, я хочу создать NTFS HardLinks (а не копировать каждый файл несколько раз).

Я использую Windows 7. Вы знаете, как мне лучше всего решить эту задачу?

Я думал об использовании « Все» (которое может мгновенно отображать список всех файлов, для которых задано слово в именах файлов), но основная проблема заключается в получении имен категорий (поскольку сначала мне нужен список всех слов, которые появляются в именах файлов).

1 ответ1

1

Короткий скрипт PowerShell, в котором перечислены все имена файлов, которые соответствуют «category_name-anyText.anyExtension» .:

$dir="Q:\Test";
$categories="Q:\categories.txt";
$cats=@{};

get-childitem $dir -recurse | %{

    $file=$_;
    if(-not $file.PSIsContainer)
    {
        if( $file.BaseName -match "^([a-z0-9]+)[-]+.*$")
        {
            if( -not $cats.ContainsKey($matches[1]))
            {
                $cats.add($matches[1], [int]1);
            }
            else
            {
                $val=$cats.Get_Item($matches[1]) + 1;
                $cats.Set_Item($matches[1], $val);
            }
        }
    }
}

$cats.GetEnumerator() | %{

    echo $_.Key >> $categories;
}

Пример: файлы:

   David_Eddings-The_Mallorean.epub
   Jan_Myrdal-Confessions_of_a_disloyal_european.txt
   George_Orwell-Homage_to_Catalonia.mobi

Приведет к следующим категориям:

   David_Eddings
   Jan_Myrdal
   George_Orwell

Это регулярное выражение, которое соответствует именам файлов: «^([a-z0-9]+)[-]+. * $», Это должно быть скорректировано для соответствия различным категориям.

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