Помощь - Поиск - Пользователи - Календарь
Полная версия: файлы
UoKit.com Форумы > Кликер > UO Pilot
portos
парни ,можно uopilot решить такую задачу - в папке 1 находятся фото, нужно очистить папку 2 от фото, взять первое фото из папки 1 и переместить в папку 2.перемещать не по имени фото (имена все разные)
FREEON
Код

set linedelay 0
log clear
log mode compact
//расширения файлов фото
set %form [1] jpg
set %form [2] jpeg
set %form [3] png
set %form [4] gif
set %form [5] svg
set %form [6] bmp
set $path "D:\ПапкаОткудаКопируем" //путь папки откуда нужно скопировать
For #i 1 size(%form)
    dir (%image $path *.%form[#i]*)             //поиск картинок в папке и загрузка их в массив
    log В папке найдено: size(%image) картинок c расширением %form[#i]
    for #j 1 size(%image)
        log %image [#j 1]  //имя картинки путь и расширение запишем в лог
        filecopy ("%image [#j 1]" "D:\КудаВставляем\%image[#j 3].%image[#j 4]")
        //FileDelete (%image [#j 1]) //удаляем файл из 1й папки
    end_for
end_for
end_script

примерно так но у меня чето не работает копирование поэтаму удаление файлов закоментировал
cirus
Цитата
чето не работает копирование
"%image [#j 1]"

Переменная заключена в кавычки, это просто текст. Да и многие функции пилота не работают с массивами.

Код
set $path1 "C:\1"
set $path2 "C:\2"

dir (%result $path2)     // найти все файлы в папке
for #i 1 size(%result)
    filedelete (%result[#i 1])    // удалить
end_for

dir (%result2 $path1)   // найти все файлы в папке

init_arr %a (1) $path1 \ %result2[1 3] %result2[1 4]
init_arr %a (2) $path2 \ %result2[1 3] %result2[1 4]
set $s1 %a[1]
set $s2 %a[2]

filecopy ($s1 $s2)      // скопировать файл
filedelete (%result2[1 1])  // удалить файл
end_script
portos
Цитата(cirus @ 1.3.2020, 19:28) *

Переменная заключена в кавычки, это просто текст. Да и многие функции пилота не работают с массивами.

Код
set $path1 "C:\1"
set $path2 "C:\2"

dir (%result $path2)     // найти все файлы в папке
for #i 1 size(%result)
    filedelete (%result[#i 1])    // удалить
end_for

dir (%result2 $path1)   // найти все файлы в папке

init_arr %a (1) $path1 \ %result2[1 3] %result2[1 4]
init_arr %a (2) $path2 \ %result2[1 3] %result2[1 4]
set $s1 %a[1]
set $s2 %a[2]

filecopy ($s1 $s2)      // скопировать файл
filedelete (%result2[1 1])  // удалить файл
end_script



так работает отлично ,спасибо за помощь
FREEON
Цитата(cirus @ 1.3.2020, 20:28) *

Переменная заключена в кавычки, это просто текст. Да и многие функции пилота не работают с массивами.

а все так работает
Код
set linedelay 0
log clear
log mode compact
//расширения файлов фото
set %form [1] jpg
set %form [2] jpeg
set %form [3] png
set %form [4] gif
set %form [5] svg
set %form [6] bmp
set $path "D:\ПапкаОткудаКопируем" //путь папки откуда нужно скопировать
For #i 1 size(%form)
    dir (%image $path *.%form[#i]*)             //поиск картинок в папке и загрузка их в массив
    log В папке найдено: size(%image) картинок c расширением %form[#i]
    for #j 1 size(%image)
        log %image [#j 1]  //имя картинки путь и расширение запишем в лог
        set $file %image[#j 1]
        set $name D:\КудаВставляем\%image[#j 3]%image[#j 4]
        filecopy ($file $name)
        log $file $name
        FileDelete (%image [#j 1]) //удаляем файл из 1й папки
    end_for
end_for
end_script
portos
и ещё один вопрос -можно реализовать так , в папке 3 находятся папки с фото ,нужно взять все фото из папки и перекинуть в папку 1 ,потом удалить эту папку .сделать

set $path1 "D:\1"
set $path2 "D:\2"

dir (%result $path2) // найти все файлы в папке
for #i 1 size(%result)
filedelete (%result[#i 1]) // удалить
end_for

dir (%result2 $path1) // найти все файлы в папке

init_arr %a (1) $path1 \ %result2[1 3] %result2[1 4]
init_arr %a (2) $path2 \ %result2[1 3] %result2[1 4]
set $s1 %a[1]
set $s2 %a[2]

filecopy ($s1 $s2) // скопировать файл
filedelete (%result2[1 1]) // удалить файл

когда закончились фото в папке 1, вернуться в папку 3 и взять новые фото из следующей папки
FREEON
можно с помощью масива..только нужно чоткое понимание что откуда брать и куда вставлять...нужно вам расписать примерно так
из 1 в 2, из 2 в 3 из 3 в 4
или из папки 1,2,3 в папку 4 из 5 6 в папку 7
и тому подобное
portos
есть папка 3 ,в ней несколько папок с фото (A,B.C .....), нужно взять фото из папки A и перекинуть в папку 1,после папку А удалить . проделать

set $path1 "D:\1"
set $path2 "D:\2"

dir (%result $path2) // найти все файлы в папке
for #i 1 size(%result)
filedelete (%result[#i 1]) // удалить
end_for

dir (%result2 $path1) // найти все файлы в папке

init_arr %a (1) $path1 \ %result2[1 3] %result2[1 4]
init_arr %a (2) $path2 \ %result2[1 3] %result2[1 4]
set $s1 %a[1]
set $s2 %a[2]

filecopy ($s1 $s2) // скопировать файл
filedelete (%result2[1 1]) // удалить файл

когда закончатся фото в папке 1, взять новые фото из папки B и т.д

может проще сделать ,брать фото из папки А и перекидывать в папку 2 (без применения папки 1)
cirus
код
Код
set $path1 "C:\3"  // папка, в которой папки с картинками
set $path2 "C:\2"

dir (%result $path2)     // найти все файлы в папке
for #i 1 size(%result)
    filedelete (%result[#i 1])    // удалить
end_for

dir (%result2 $path1 "*.*" norecursion)   // найти все папки

set $path3 %result2 [1 1]
dir (%result3 $path3)     // найти все файлы в папке

init_arr %a (1) $path1 \ %result2[1 3] \ %result3[1 3] %result3[1 4]
init_arr %a (2) $path2 \ %result3[1 3] %result3[1 4]
set $s1 %a[1]
set $s2 %a[2]

filecopy ($s1 $s2)      // скопировать файл
filedelete (%result3[1 1])  // удалить файл
if  size(%result3) = 1 or size(%result3) = 0  // если в папке был 1 файл или папка пустая, то удалить папку
    init_arr %a (3) $path1 \ %result2[1 3]
    DirRemove (%a[3])  // удалить папку
end_if
end_script
portos
работает отлично , то что нужно было . благадарю
portos
почему мог перестать корректно работать скрипт ,не добавляет фото в папку D:\2

set $path1 "D:\3" // папка, в которой папки с картинками
set $path2 "D:\2"

dir (%result $path2) // найти все файлы в папке
for #i 1 size(%result)
filedelete (%result[#i 1]) // удалить
end_for

dir (%result2 $path1 "*.*" norecursion) // найти все папки

set $path3 %result2 [1 1]
dir (%result3 $path3) // найти все файлы в папке

init_arr %a (1) $path1 \ %result2[1 3] \ %result3[1 3] %result3[1 4]
init_arr %a (2) $path2 \ %result3[1 3] %result3[1 4]
set $s1 %a[1]
set $s2 %a[2]

filecopy ($s1 $s2) // скопировать файл
filedelete (%result3[1 1]) // удалить файл
if size(%result3) = 1 or size(%result3) = 0 // если в папке был 1 файл или папка пустая, то удалить папку
init_arr %a (3) $path1 \ %result2[1 3]
DirRemove (%a[3]) // удалить папку
end_if
end_script
portos
set $path1 "C:\3" // папка, в которой папки с картинками
set $path2 "C:\2"

dir (%result $path2) // найти все файлы в папке
for #i 1 size(%result)
filedelete (%result[#i 1]) // удалить
end_for

dir (%result2 $path1 "*.*" norecursion) // найти все папки

set $path3 %result2 [1 1]
dir (%result3 $path3) // найти все файлы в папке

init_arr %a (1) $path1 \ %result2[1 3] \ %result3[1 3] %result3[1 4]
init_arr %a (2) $path2 \ %result3[1 3] %result3[1 4]
set $s1 %a[1]
set $s2 %a[2]

filecopy ($s1 $s2) // скопировать файл
filedelete (%result3[1 1]) // удалить файл
if size(%result3) = 1 or size(%result3) = 0 // если в папке был 1 файл или папка пустая, то удалить папку
init_arr %a (3) $path1 \ %result2[1 3]
DirRemove (%a[3]) // удалить папку
end_if
end_script

может кто то поможет ,когда в имени фото два слова (в папке "C:\3") не копирует в папку "C:\2"
cirus
Вместо:
Цитата
init_arr %a (1) $path1 \ %result2[1 3] \ %result3[1 3] %result3[1 4]

Код
set %a[1 1] $path1
set %a[1 2] "\"
set %a[1 3] %result2[1 3]
set %a[1 4] "\"
set %a[1 5] %result3[1 3]%result3[1 4]
portos
всем спасибо кто помогал , код не работает корректно .. лучше ручками
portos
set %a[1 1] $path1
set %a[1 2] "\"
set %a[1 3] %result2[1 3]
set %a[1 4] "\"
set %a[1 5] %result3[1 3]%result3[1 4]

set %a[2 1] $path2
set %a[2 2] "\"
set %a[2 3] %result3[1 3] %result3[1 4]

вот так вроде пошло
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.