Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поиск файлов по имени папки и сортировка (http://forum.oszone.net/showthread.php?t=297300)

Noscripter 22-03-2015 19:25 2486154

Поиск файлов по имени папки и сортировка
 
добрый день! в скриптовании и программировании не силён, прошу помочь реализовать следующую задачу:
имеем одну директорию с одноуровневым вложением поддиректорий вида E:\files\Novaya Rabota , E:\files\Institut Lessons и т.д, чаще всего всего имена субдиректорий состоят из двусоставных словосочетании. также есть одна большая директория Sources в которой тысячи файлов, также имеющих сходные с вышеуказанными папками, названия, но с некоторыми вариациями вида "institut+lessons ABCDE" , "Novaya_rabota3453", "institut lessons-123" и т.д. нужно чтобы скрипт/программа переместила все файлы в одноимённые директории без учёта расширения и регистра, т.е. скрипту надо сначала взять название первой директории за образец и найти все файлы с вариациями, переместив их в нужную папку.важный момент: при наличии одинаковых файлов в директориях источника и назначения , игнорировать перемещение из источника одноимённого файла, пропустить его для дальнейшей ручной сортировки( если в E:\sources и E:\files есть файл file111.txt , то не перемещать этот файл).
как понимаю, без регулярных выражений здесь не обойтись?
спасибо

Foreigner 23-03-2015 00:43 2486271

PowerShell:
Код:

[array] $dirs = get-item 'e:\files'

get-childitem 'e:\files' | where { $_.psiscontainer } | foreach { $dirs += $_ }
foreach ($dir in $dirs) {

    $mask = ($dir.name.split() -join '*') + '*'
   
    get-childitem 'e:\sources' $mask | foreach {
   
        move-item -path $_.fullname -dest $dir.fullname -ea 0
       
}}



Время: 12:46.

Время: 12:46.
© OSzone.net 2001-