Прошу помочь, я новичек в работе с программой, поэтому просьба строго не судить.
Имеется два txt файла, один содержит имена файлов(получен батником в корне папки, т.е. содержит список всех файлов в текстовом виде), другой содержит путь к каталогам (с которыми нужно сопоставить и сохранить при нахождении).
Задача такая, чтобы зайти в файл с именами, выдернуть из нее определенную часть, согласно маске, и получившийся результат поискать во втором txt файле. Если он найдет совпадение, то должен создать какой нибудь файл по этому каталогу, если не найдет, то просто закинуть в папку "несортированны".
1й txt файл (песни.txt) имеет имена, к примеру: Кино - Восьмиклассница
2й txt файл (пути.txt) имеет следующий текст: Кино;H:\Сортировано\Русские\К\Кино (Цой Виктор)\;
Делаю так:
По итогу, при условии что имя исполнителя из первого файла есть в во втором файле, то вроде все работает хорошо, но если исполнителя во втором файле нет, то он все равно пишет в папку Кино (Цой Виктор)
Где я ошибся?
Имеется два txt файла, один содержит имена файлов(получен батником в корне папки, т.е. содержит список всех файлов в текстовом виде), другой содержит путь к каталогам (с которыми нужно сопоставить и сохранить при нахождении).
Задача такая, чтобы зайти в файл с именами, выдернуть из нее определенную часть, согласно маске, и получившийся результат поискать во втором txt файле. Если он найдет совпадение, то должен создать какой нибудь файл по этому каталогу, если не найдет, то просто закинуть в папку "несортированны".
1й txt файл (песни.txt) имеет имена, к примеру: Кино - Восьмиклассница
2й txt файл (пути.txt) имеет следующий текст: Кино;H:\Сортировано\Русские\К\Кино (Цой Виктор)\;
Делаю так:
Код:
$sKatalog = FileRead("H:\музыка\песни.txt") ;открываем файл для чтения
$song_name = FileReadLine($sKatalog )
$song_name_split= StringSplit($song_name," - ",1) ; получаем две переменные "Кино" и "Восьмиклассница"
$path = "H:\музыка\пути.txt"
$aLines = StringSplit($path ,";"&@CRLF,1) ; В файле $path данные хранятся в виде "Кино;H:\Обновления\Сортировано\Русские\К\Кино (Цой Виктор)\;" Разбиваем на переменные "Кино" и "H:\Обновления\Сортировано\Русские\К\Кино (Цой Виктор)\"
$sNotSorted = "H:\музыка\Несортированные\"
For $x = 1 To $aLines[0] Step +1
$sSorted = StringRegExpReplace($aLines[$x],$song_name_split[1]&";","") ; Ищем "Кино" в файле "Пути.txt", удаляя при этом само название группы и знак ;, чтобы оставить только путь каталога
If StringInStr($aLines[$x], $sSearched)<>@error Then ; Если ошибки нет, то путь прописывается H:\Сортировано\Русские\К\Кино (Цой Виктор)\
DirCreate ($sSorted)
$sFinalPath = $sSorted ;При выполнении условия значение - H:\Сортировано\Русские\К\Кино (Цой Виктор)\
Else
DirCreate ($sNotSorted )
$sFinalPath = $sNotSorted ; при невыполнении условия значение - H:\музыка\Несортированные\
EndIf
Next
FileCopy($song_name&".mp3",$sFinalPath) ;файл mp3 лежит в этом же каталоге, копируем его в финальный каталог, в нашем случае H:\Сортировано\Русские\К\Кино (Цой Виктор)\Кино - Восьмиклассница.mp3
По итогу, при условии что имя исполнителя из первого файла есть в во втором файле, то вроде все работает хорошо, но если исполнителя во втором файле нет, то он все равно пишет в папку Кино (Цой Виктор)
Где я ошибся?