View previous topic :: View next topic |
Author |
Message |
Petr_Ch
Joined: 02 Feb 2013 Posts: 17
|
(Separately) Posted: Sat Feb 02, 2013 19:29 Post subject: |
|
|
Flasher
Ок. Кратко.
Скрипт 1.
Дано:
C:\temp\11111111111\1\pic\0001.jpg
C:\temp\11111111111\1\pic\0002.jpg
C:\temp\11111111111\1\pic\0003.jpg
C:\temp\11111111111\2\pic\0001.jpg
C:\temp\11111111111\2\pic\0002.jpg
C:\temp\11111111111\2\pic\0003.jpg
C:\temp\11111111111\3\pic\0001.jpg
C:\temp\11111111111\3\pic\0002.jpg
C:\temp\11111111111\3\pic\0003.jpg
C:\temp\11111111111\4\pic\0001.jpg
C:\temp\11111111111\4\pic\0002.jpg
C:\temp\11111111111\4\pic\0003.jpg
Надо получить:
C:\temp\22222222\1_0001.jpg
C:\temp\22222222\1_0002.jpg
C:\temp\22222222\1_0003.jpg
C:\temp\22222222\2_0001.jpg
C:\temp\22222222\2_0002.jpg
C:\temp\22222222\2_0003.jpg
C:\temp\22222222\3_0001.jpg
C:\temp\22222222\3_0002.jpg
C:\temp\22222222\3_0003.jpg
C:\temp\22222222\4_0001.jpg
C:\temp\22222222\4_0002.jpg
C:\temp\22222222\4_0003.jpg
Скрипт 2.
Дано:
C:\temp\22222222\1_0001.jpg
C:\temp\22222222\1_0002.jpg
C:\temp\22222222\1_0003.jpg
C:\temp\22222222\2_0001.jpg
C:\temp\22222222\2_0002.jpg
C:\temp\22222222\2_0003.jpg
C:\temp\22222222\3_0001.jpg
C:\temp\22222222\3_0002.jpg
C:\temp\22222222\3_0003.jpg
C:\temp\22222222\4_0001.jpg
C:\temp\22222222\4_0002.jpg
C:\temp\22222222\4_0003.jpg
Надо получить:
C:\temp\11111111111\1\pic\0001.jpg
C:\temp\11111111111\1\pic\0002.jpg
C:\temp\11111111111\1\pic\0003.jpg
C:\temp\11111111111\2\pic\0001.jpg
C:\temp\11111111111\2\pic\0002.jpg
C:\temp\11111111111\2\pic\0003.jpg
C:\temp\11111111111\3\pic\0001.jpg
C:\temp\11111111111\3\pic\0002.jpg
C:\temp\11111111111\3\pic\0003.jpg
C:\temp\11111111111\4\pic\0001.jpg
C:\temp\11111111111\4\pic\0002.jpg
C:\temp\11111111111\4\pic\0003.jpg
Идеи? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Feb 02, 2013 19:33 Post subject: |
|
|
Petr_Ch
Оверквотить и расписывать исходную задачу никто не просил. По ней уже приводилась реализация (по крайней мере в отношении первой части). Если памятка не читалась (как можно видеть), то это не проблема помогающего.
Конечной цели, я так понял, мы так и не увидим. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Petr_Ch
Joined: 02 Feb 2013 Posts: 17
|
(Separately) Posted: Sat Feb 02, 2013 19:56 Post subject: |
|
|
Flasher
Ок. Перефразирую проще.
Имеем некий массив "а". Надо только средствами TC преобразовать его в массив "Б".
Примеры:
Массив "А".
C:\temp\11111111111\1\pic\0001.jpg
C:\temp\11111111111\1\pic\0002.jpg
C:\temp\11111111111\1\pic\0003.jpg
C:\temp\11111111111\2\pic\0001.jpg
C:\temp\11111111111\2\pic\0002.jpg
C:\temp\11111111111\2\pic\0003.jpg
C:\temp\11111111111\3\pic\0001.jpg
C:\temp\11111111111\3\pic\0002.jpg
C:\temp\11111111111\3\pic\0003.jpg
C:\temp\11111111111\4\pic\0001.jpg
C:\temp\11111111111\4\pic\0002.jpg
C:\temp\11111111111\4\pic\0003.jpg
Массив "Б".
C:\temp\22222222\1_0001.jpg
C:\temp\22222222\1_0002.jpg
C:\temp\22222222\1_0003.jpg
C:\temp\22222222\2_0001.jpg
C:\temp\22222222\2_0002.jpg
C:\temp\22222222\2_0003.jpg
C:\temp\22222222\3_0001.jpg
C:\temp\22222222\3_0002.jpg
C:\temp\22222222\3_0003.jpg
C:\temp\22222222\4_0001.jpg
C:\temp\22222222\4_0002.jpg
C:\temp\22222222\4_0003.jpg
Конечная цель - массив "Б". Всё. Точка. Нет третьего дна.
Куда уж проще я не знаю((( |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Feb 02, 2013 20:01 Post subject: |
|
|
Ок. Вижу разницу. Появилось дополнительное условие с переименованием одного из родительских каталогов. Средствами ТС так не получится. Только скриптингом.
Теперь самое главное:
Petr_Ch wrote: | после редактирования файлов всё предстоит проделать в обратном порядке | Что понимается под редактированием файлов?
Скрипт, как я уже писал, простой (но идея кидать файлы туда-сюда пока в моей голове не укладывается):
Code: | '===============================================================================
' Перемещение jpg- и tif-файлов из папки ..\№\pic\ в корень выбранной папки
' с переименованием их по шаблону №_имя и последующим удалением пустых подпапок
' Параметры: "<путь к папке>" <имя новой папки>
' Пример: %V 22222222
'===============================================================================
With WScript.Arguments
If .Count < 2 Then : MsgBox "Укажите 2 параметра!", 4144 : Wscript.Quit : End if
Path = .Item(0) : NewName = .Item(1)
End With
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Path) : Folder.Name = NewName
NewPath = Folder.ParentFolder & "\" & NewName
For Each Fd In FSO.GetFolder(NewPath).SubFolders
If IsNumeric(Fd.Name) Then
For Each Fl In FSO.GetFolder(Fd & "\pic").Files
Ext = LCase(FSO.GetExtensionName(Fl))
If Ext = "jpg" Or Ext = "tif" Then Fl.Move NewPath & "\" & Fd.Name & "_" & Fl.Name
Next : If Fd.Size = 0 Then Fd.Delete
End If
Next : Set FSO = Nothing : Set Folder = Nothing : WScript.Quit |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Sun Feb 03, 2013 00:25; edited 3 times in total |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Sat Feb 02, 2013 21:45 Post subject: |
|
|
Petr_Ch
Ещё раз: оверквотинг запрещён правилами форума. Абсолютно никому не нужное полное цитирование предыдущих постов удалено.
И я хотел бы со своей стороны понять: чем не устраивает редактирование в режиме показа файлов без подкаталогов и зачем вообще все эти переносы? Видимо, в самом деле надо пояснить, что же понимается под редактированием. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Sun Feb 03, 2013 22:32 Post subject: |
|
|
Petr_Ch wrote: | Код подправил, но выдает ошибку. Что-то в предпоследней строчке ему не нравится. |
Прошу прощения - писал без проверки и ошибся немного. Попустил "Then". Эта строка должна быть:
Code: | If (lE = "jpg") Or (lE = "tif") Then FSO.MoveFile pFile.Path, lF |
Исправил и соответствующий пост.
Petr_Ch wrote: | Хотя, судя по всему, он и начальные команды не выполняет((( |
Ну, это будет видно, когда скрипт отработает без ошибок.
Также не следует забывать, что исходный (и нынешний модифицированный) скрипт работает с выделенными папками.
И ещё - исходный скрипт после переноса удаляет папки. Если этого не требуется, нужно удалить или закомментировать сроку:
Code: | FSO.DeleteFolder lF.Path |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
Petr_Ch
Joined: 02 Feb 2013 Posts: 17
|
(Separately) Posted: Fri Feb 08, 2013 23:54 Post subject: |
|
|
Flasher wrote: | Ок. Вижу разницу. Появилось дополнительное условие с переименованием одного из родительских каталогов. |
Вы немного нетак меня поняли. Переименовывать или удалять никаких каталогов не надо. И к файлам надо не номера дописывать, а имя папки над папкой "pic".
Avada, извиняюсь за оверквотинг, но явно нужны ещё пояснения.
Путь был:
C:\111111\abrakadabra\pic\0000001.jpg
Путь стал:
D:\temp\abrakadabra_0000001.jpg
Где "D:\temp\" даны просто для примера. Это может быть родительский каталог или просто вторая панель. Не важно.
А в целом ваш скрипт сработал, но он файлы ни на дюйм не сдвинул. Просто переименовал исходную папку.
Batya wrote: | Пропустил "Then"... |
Подправил скрипт. Запускаю → за долю секунды что-то происходит, но в результате всё остаётся как было. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Feb 09, 2013 00:03 Post subject: |
|
|
Petr_Ch wrote: | Переименовывать или удалять никаких каталогов не надо. | Как запрашиваем, так и получаем: Petr_Ch wrote: | преобразовать его в массив "Б". |
Petr_Ch wrote: | но он файлы ни на дюйм не сдвинул. | На какой папке курсор и какие параметры? Если опять нет желания обращаться к памятке с рекомендациями при проблемах, то это не моя вина. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Petr_Ch
Joined: 02 Feb 2013 Posts: 17
|
(Separately) Posted: Sat Feb 09, 2013 21:14 Post subject: |
|
|
Flasher wrote: | На какой папке курсор и какие параметры? |
(c:\temp\XXXX\pic\0001.jpg)
Курсор на папках XXXX.
Параметры %V c:\temp "11"
Как и писал ранее скрипт просто переименовывает temp в 11.
Flasher wrote: | Если опять нет желания обращаться к памятке с рекомендациями при проблемах, то это не моя вина. |
Что за памятка? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Feb 09, 2013 21:28 Post subject: |
|
|
Petr_Ch wrote: | Параметры %V c:\temp "11" | А где в шапке скрипта указано, что параметра 3? c:\temp тут ни к чему вообще. Кавычки для имени (11) без пробелов не требуются, опять же они не указаны.
Petr_Ch wrote: | Что за памятка? | Единственная тема, прикрепленная к подфоруму. Неужели не видно? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Petr_Ch
Joined: 02 Feb 2013 Posts: 17
|
(Separately) Posted: Mon Feb 11, 2013 15:19 Post subject: |
|
|
Flasher wrote: | А где в шапке скрипта указано, что параметра 3? |
Но ваш параметр %V 22222222 выдаёт сообщение "укажите два параметра".
В памятке ответов не нашел((
У меня тотал 7.04a. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 11, 2013 15:44 Post subject: |
|
|
Petr_Ch
Речь про проблемы, нижняя часть памятки.
Не удивительно, что выдаёт. %V в такой старой версии ТС и в помине не было. Заменить на %P%N. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Mon Feb 11, 2013 16:55 Post subject: |
|
|
Petr_Ch wrote: | Подправил скрипт. Запускаю → за долю секунды что-то происходит, но в результате всё остаётся как было. |
Выполнено ли следующее?
Batya wrote: | Также не следует забывать, что исходный (и нынешний модифицированный) скрипт работает с выделенными папками. |
Из этого примера это папки
C:\temp\11111111111\1
C:\temp\11111111111\2
C:\temp\11111111111\3
C:\temp\11111111111\4 _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
Petr_Ch
Joined: 02 Feb 2013 Posts: 17
|
(Separately) Posted: Tue Feb 12, 2013 10:39 Post subject: |
|
|
Flasher
%P%N не помогло.
Обновил версию тотала до 8.1, но скрипт по прежнему всего лишь переименовывает папку, на которой курсор. (независимо от кол-ва выделенных папок).
Версия wscript.exe 5.7.0.18066
WinXP x86
Batya
Выделять пробовал самые разные папки. Не помогает.
Параметр %L |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Feb 12, 2013 12:25 Post subject: |
|
|
Petr_Ch
Перейдём к конкретике. Берём указанный в точности тут список. Устанавливаем курсор на папке 11111111111. Жмём такую кнопку: Code: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Scripts\MoveImages.vbs
%P%N 22222222
wcmicons.dll,76
Изменить имя каталога и переместить картинки из его структуры в корень | Работает - нет? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
|