Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Oka08 on March 28, 2019, 12:41:25 PM
-
Здравствуйте необходим скрипт который бы искал в каталоге (например C:\Office) папки с определенным названием (например "123" C:\Office\123 ; C:\Office\port\123 ; C:\Office\win\tor
123 и т.д.), в этих папках находил файлы по маске *.pdf и копировал эти файлы или ярлыки к ним, в другую папку (например C:\общак123)
-
Вот, посидел, поковырял новый функционал по работе с файлами и файловой системе, все работает отлично ;)
//будет работать только в последней бета версии, в моем случае 4.14.001b
//вводим ужное
$directory="E:\Office\" //папка, где будем искать
$subdirectory = "123" //искомая папка
$newdirectory = "E:\all_files" //папка для склада файлов
TFCLEAR ("cataloglist.txt") //очищаем файл
//все подкаталоги папки $directory пишем в файл cataloglist.txt
STRWRITELN ("test.bat"," ",1)
STRWRITELN ("test.bat", strconcat("dir /ad /b /s ",$directory," >>cataloglist.txt"),0)
waitms(50)
execute("test.bat")
waitms(500)
//ищем каталоги с нужными именами
FOR($a=1,$a <= TFCOUNT ("cataloglist.txt") ) //перебор строк
IF(STRPOS (TFREAD ("cataloglist.txt",$a), $subdirectory) > 0)//если в строке есть имя подкаталога
$offset = 1
WHILE($offset < STRLEN(TFREAD ("cataloglist.txt",$a))) //пока в строке не закончатся эти имена
IF(STRPOS(TFREAD ("cataloglist.txt",$a), $subdirectory,$offset) > 0) //смотрим есть ли имя с отсчетом от $offset
$folder = STRCUT2(TFREAD ("cataloglist.txt",$a),1, STRPOS(TFREAD("cataloglist.txt",$a), $subdirectory,$offset) + STRLEN($subdirectory)-1) //сохраняем этот путь к папке
//проверяем, чтоб не повторялись
FOR($i=0,$i<arrsize($all_sub))
IF($all_sub[$i] = $folder)
$i=arrsize($all_sub)
END_IF
END_CYC
//если такого пути нет, то пишем его в массив
IF($i = arrsize($all_sub))
arrpush($all_sub, STRCUT2(TFREAD ("cataloglist.txt",$a),1, STRPOS(TFREAD("cataloglist.txt",$a), $subdirectory,$offset) + STRLEN($subdirectory)-1))
END_IF
END_IF
$offset = $offset + STRPOS (TFREAD ("cataloglist.txt",$a), $subdirectory, $offset) + STRLEN($subdirectory)
END_CYC
END_IF
END_CYC
//смотрим в логе все подкаталоги с нужными именами
//FOR($a=0,$a<arrsize($all_sub))
// print($all_sub[$a])
//END_CYC
FCREATE ($newdirectory)//создаем общую папку
//дальще ищем в этих коталогах файлы по маске *.pdf и копируем в общую папку
FOR($a=0,$a<arrsize($all_sub))
getfilelist($files, strconcat($all_sub[$a], "\*.pdf")) //в массив имена всех файлов *.pdf в каждой из папок
FOR($i=0,$i<arrsize($files)) // поочереди копируем эти файлы в новый каталог
print(strconcat($all_sub[$a],"\", $files[$i])) //смотрим в логе наши найденные файлы
FCOPY (strconcat($all_sub[$a],"\", $files[$i]), strconcat($newdirectory,"\", $files[$i]))
END_CYC
END_CYC
halt