View previous topic :: View next topic |
Author |
Message |
NAA
Joined: 05 Dec 2014 Posts: 18
|
(Separately) Posted: Fri Dec 05, 2014 23:53 Post subject: Как скопировать файл под разными именами из списка имен? |
|
|
Имеется файл с определенным содержимым. Нужно размножить его под разными именами на основании имеющегося списка имен. Как это быстро сделать?
Чтобы была понятнее задача, напишу подробнее.
Имеется коллекция фотографий в формате RAW (если уж совсем точно - CR2 от Canon'а). Фотоаппарат не имеет GPS-модуля. А я хочу к фотографиям добавить GPS-координаты. Я знаю, что если я создам файлы в формате XMP с координатами и дам им те же имена, что и CR2-файлы, то RAW-конвертер автоматически подхватит координаты из одноименных XMP-файлов.
Эталонный XMP-файл я создал. Теперь задача: размножить этот файл по папкам с фотографиями. Как получить список CR2-файлов в каждой папке с помощью TC, я знаю. А вот как на основании этого списка файлов размножить свой XMP-файл, я так и не понял.
Если это невозможно сделать через TC, то как можно сделать другим способом?
! | Avada: | Перенесено из "Общих вопросов" в "Автоматизацию". | |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 06, 2014 01:36 Post subject: |
|
|
Если всё сводится к задаче NAA wrote: | размножить этот файл по папкам с фотографиями | , то что мешает использовать опцию "Копировать во все выделенные папки/ссылки целевой панели"? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
NAA
Joined: 05 Dec 2014 Posts: 18
|
(Separately) Posted: Sat Dec 06, 2014 12:39 Post subject: |
|
|
Так нужно, чтобы в каждой папке было столько экземпляров этого файла, сколько там есть фотографий, и чтобы каждый экземпляр файла при этом назывался так, как называется каждый файл фотографии. Я же подробно об этом написал... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 06, 2014 13:54 Post subject: |
|
|
Тогда это точно не в Общие вопросы.
Речь идёт о базовых именах файлов?
Описывать задачу нужно проще (без лишней шелухи). Что-то вроде: создать в выбранных каталогах копии XMP-файла рядом с CR2-файлами, придав им то же базовое имя.
Теперь я правильно понял? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
NAA
Joined: 05 Dec 2014 Posts: 18
|
(Separately) Posted: Sat Dec 06, 2014 14:36 Post subject: |
|
|
Flasher wrote: | создать в выбранных каталогах копии XMP-файла рядом с CR2-файлами, придав им то же базовое имя. |
Совершенно верно!
Можно задачу упростить: не в выбранных каталогах, а в текущем каталоге.
И еще уточнение: желательно уметь работать с выделенным подмножеством CR2-файлов в данном каталоге |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 06, 2014 15:08 Post subject: |
|
|
NAA wrote: | Можно задачу упростить | Лень уже упрощать. VBS: Code: | '===========================================================
' Cоздать в выбранных каталогах копии файла с базовым именем
' содержащихся внутри файлов указанного расширения
' Параметры: %WL "<Путь к файлу>" <искомое расширение>
' Пример: %WL "C:\My Folder\File.xmp" cr2
'===========================================================
With WScript.Arguments
If .Count = 0 Then WScript.Quit
List = .Item(0) : File = .Item(1) : Ex = .Item(2)
End With : Set ShA = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FileExists(File) Then
Title = " Размножение файла в выбранных каталогах"
MsgBox "Файла " & File & " не существует!" & vbLf &_
"Укажите верный путь в параметрах!", 48, Title : WScript.Quit
End If : Ext = FSO.GetExtensionName(File)
With FSO.OpenTextFile(List,,,-1)
Do Until .AtEndOfStream
Fd = Trim(.ReadLine)
If Fd <> "" And FSO.FolderExists(Fd) Then
Set Items = ShA.NameSpace(Fd).Items
Items.Filter 192, "*." & Ex
For Each i in Items
FSO.CopyFile File, Fd & FSO.GetBaseName(i) & "." & Ext, 0
Next
End if
Loop : .Close
End With |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
NAA
Joined: 05 Dec 2014 Posts: 18
|
(Separately) Posted: Sat Dec 06, 2014 15:55 Post subject: |
|
|
Что-то у меня не работает. Наверно, что-то не так делаю.
Я сделал так.
Создал файл CopyFiles.vbs. Поместил в него содержимое скрипта.
В Панели инструментов TC добавил кнопочку, в строке «Команда» поместил «d:\!Test\!!!\CopyFiles.vbs»; в строке «Параметры» поместил «? %WL "%P%N" cr2».
Ставлю курсор на исходный XMP-файл, нажимаю созданную кнопочку.
Что-то происходит, но в текущем каталоге ничего не появляется. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 06, 2014 16:01 Post subject: |
|
|
NAA wrote: | ? %WL "%P%N" cr2 | Зачем тут знак вопроса? %P%N в кавычки не берётся и будет иметь место только в случае расположения выбранных папок в одном каталоге с файлом, поэтому путь к нему лучше указывать прямой. Смысл файл выбирать в панели? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
NAA
Joined: 05 Dec 2014 Posts: 18
|
(Separately) Posted: Sat Dec 06, 2014 16:10 Post subject: |
|
|
Flasher wrote: | Зачем тут знак вопроса? | Чтобы проверить, что команда формируется правильная. Поскольку не работало, я его и вставил.
Flasher wrote: | %P%N в кавычки не берётся | Без кавычек тоже не работало.
Flasher wrote: | Смысл его выбирать в панели? | Чтобы можно было использовать XMP-файл с произвольным именем.
Но и с постоянным именем тоже не работает.
Т. е. с такими параметрами: «%WL 1.xmp cr2» тоже не сработало. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 06, 2014 16:16 Post subject: |
|
|
NAA wrote: | Чтобы проверить, что команда формируется правильная. | И что, правильная команда вышла?
NAA wrote: | Без кавычек тоже не работало. | И я пояснил почему. NAA wrote: | Чтобы можно было использовать XMP-файл с произвольным именем. | Тогда можно в неактивной панели оставлять курсор на этом файле и использовать параметр %T%M. NAA wrote: | Т. е. с такими параметрами: «%WL 1.xmp cr2» тоже не сработало. | А где тут, собственно, прямой путь? Я вижу только имя. Для чего пример в шапке приводится? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
NAA
Joined: 05 Dec 2014 Posts: 18
|
(Separately) Posted: Sat Dec 06, 2014 16:19 Post subject: |
|
|
Flasher wrote: | А где тут, собственно, прямой путь? Я вижу только имя. Для чего пример в шапке приводится? |
Так с него и начал...
Не работает ни такая команда: «%WL "d:\!Test\1.xmp" cr2», ни такая: «%WL d:\!Test\1.xmp cr2». Это я уж потом начал экспериментировать... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 06, 2014 16:22 Post subject: |
|
|
Хм. А каталоги-то выделены или нет? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
NAA
Joined: 05 Dec 2014 Posts: 18
|
(Separately) Posted: Sat Dec 06, 2014 16:41 Post subject: |
|
|
Flasher wrote: | Хм. А каталоги-то выделены или нет? | А вот это мне в голову не пришло! Я просто был в текущем каталоге.
Если каталог выделен, то работает!
А так, чтобы только в текущем каталоге работало, можно сделать? Это было бы удобнее. Тогда, может быть, можно будет сделать так, чтобы работало только с выделенными файлами в текущем каталоге.
Добавлено спустя 3 минуты:
Flasher wrote: | NAA wrote: | Чтобы можно было использовать XMP-файл с произвольным именем. | Тогда можно в неактивной панели оставлять курсор на этом файле и использовать параметр %T%M. | Ага, работает! |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 06, 2014 16:44 Post subject: |
|
|
NAA wrote: | А вот это мне в голову не пришло! | Т.е. как? Название скрипта и подтверждённая формулировка задачи об этом не свидетельствует?
NAA wrote: | Если каталог выделен, то работает! | Если он один, то его выделять нет смысла. Поэтому речь и идёт о выбранных папках.
NAA wrote: | Тогда, может быть, можно будет сделать так, чтобы работало только с выделенными файлами в текущем каталоге. | И что это даст? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
NAA
Joined: 05 Dec 2014 Posts: 18
|
(Separately) Posted: Sat Dec 06, 2014 17:08 Post subject: |
|
|
Flasher wrote: | NAA wrote: | А вот это мне в голову не пришло! | Т.е. как? Название скрипта и подтверждённая формулировка задачи об этом не свидетельствует? | Так ведь речь шла о списке файлов
Flasher wrote: | NAA wrote: | Тогда, может быть, можно будет сделать так, чтобы работало только с выделенными файлами в текущем каталоге. | И что это даст? |
Обычно в одном каталоге лежат фотографии не одного объекта, а нескольких. И каждый из объектов имеет свои GPS-координаты. Так, как сейчас получилось - нужно во вспомогательный каталог копировать фотографии одного объекта, напускать на этот каталог скрипт, удалять скопированные фотографии, затем копировать фотографии другого объекта, уже с другими координатами, и т. д. А если можно было бы работать с выделением, тогда бы я сначала выделил в текущем каталоге фото одного объекта, напустил скрипт, затем подправил бы файл с координатами, выделил второй объект, снова напустил скрипт, и т. д. - пока все объекты не будут охвачены. |
|
Back to top |
|
|
|