парни ,можно uopilot решить такую задачу - в папке 1 находятся фото, нужно очистить папку 2 от фото, взять первое фото из папки 1 и переместить в папку 2.перемещать не по имени фото (имена все разные)
Код
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
примерно так но у меня чето не работает копирование поэтаму удаление файлов закоментировал
Цитата
чето не работает копирование
"%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
Цитата(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
так работает отлично ,спасибо за помощь
Цитата(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
и ещё один вопрос -можно реализовать так , в папке 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 и взять новые фото из следующей папки
можно с помощью масива..только нужно чоткое понимание что откуда брать и куда вставлять...нужно вам расписать примерно так
из 1 в 2, из 2 в 3 из 3 в 4
или из папки 1,2,3 в папку 4 из 5 6 в папку 7
и тому подобное
есть папка 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)
код
Код
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
работает отлично , то что нужно было . благадарю
почему мог перестать корректно работать скрипт ,не добавляет фото в папку 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
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"
Вместо:
Цитата
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]
всем спасибо кто помогал , код не работает корректно .. лучше ручками
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]
вот так вроде пошло
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.