Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> файлы, перемещение и удаление файла
portos
сообщение 1.3.2020, 19:34
Сообщение #1


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



парни ,можно uopilot решить такую задачу - в папке 1 находятся фото, нужно очистить папку 2 от фото, взять первое фото из папки 1 и переместить в папку 2.перемещать не по имени фото (имена все разные)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 1.3.2020, 20:15
Сообщение #2


*****

Journeyman
Сообщений: 345
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 2001
Пользователь №: 18.346
Возраст: 25



Код

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

примерно так но у меня чето не работает копирование поэтаму удаление файлов закоментировал
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.3.2020, 20:28
Сообщение #3


**********

Elder
Сообщений: 2.764
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 17725
Пользователь №: 16.971
Возраст: 29



Цитата
чето не работает копирование
"%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
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
portos
сообщение 1.3.2020, 20:34
Сообщение #4


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



Цитата(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



так работает отлично ,спасибо за помощь
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 1.3.2020, 20:38
Сообщение #5


*****

Journeyman
Сообщений: 345
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 2001
Пользователь №: 18.346
Возраст: 25



Цитата(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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
portos
сообщение 1.3.2020, 20:55
Сообщение #6


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



и ещё один вопрос -можно реализовать так , в папке 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 и взять новые фото из следующей папки
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 1.3.2020, 20:59
Сообщение #7


*****

Journeyman
Сообщений: 345
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 2001
Пользователь №: 18.346
Возраст: 25



можно с помощью масива..только нужно чоткое понимание что откуда брать и куда вставлять...нужно вам расписать примерно так
из 1 в 2, из 2 в 3 из 3 в 4
или из папки 1,2,3 в папку 4 из 5 6 в папку 7
и тому подобное
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
portos
сообщение 1.3.2020, 21:13
Сообщение #8


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



есть папка 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)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.3.2020, 21:48
Сообщение #9


**********

Elder
Сообщений: 2.764
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 17725
Пользователь №: 16.971
Возраст: 29



код
Код
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
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
portos
сообщение 1.3.2020, 23:20
Сообщение #10


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



работает отлично , то что нужно было . благадарю
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
portos
сообщение 18.3.2020, 2:15
Сообщение #11


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



почему мог перестать корректно работать скрипт ,не добавляет фото в папку 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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
portos
сообщение 21.3.2020, 1:35
Сообщение #12


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



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"
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.3.2020, 1:39
Сообщение #13


**********

Elder
Сообщений: 2.764
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 17725
Пользователь №: 16.971
Возраст: 29



Вместо:
Цитата
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]
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
portos
сообщение 21.3.2020, 1:47
Сообщение #14


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



всем спасибо кто помогал , код не работает корректно .. лучше ручками
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
portos
сообщение 21.3.2020, 22:05
Сообщение #15


****

Apprentice
Сообщений: 120
Регистрация: 6.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.157



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]

вот так вроде пошло
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 10.4.2020, 22:59
Designed by Nickostyle