Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Нужен скрипт "поиск+переименование+перенос"
Goto page Previous  1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Petr_Ch



Joined: 02 Feb 2013
Posts: 17

Post (Separately) Posted: Sat Feb 02, 2013 19:29    Post subject: Reply with quote

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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Feb 02, 2013 19:33    Post subject: Reply with quote

Petr_Ch
Оверквотить и расписывать исходную задачу никто не просил. По ней уже приводилась реализация (по крайней мере в отношении первой части). Если памятка не читалась (как можно видеть), то это не проблема помогающего.
Конечной цели, я так понял, мы так и не увидим.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Petr_Ch



Joined: 02 Feb 2013
Posts: 17

Post (Separately) Posted: Sat Feb 02, 2013 19:56    Post subject: Reply with quote

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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Feb 02, 2013 20:01    Post subject: Reply with quote

Ок. Вижу разницу. Появилось дополнительное условие с переименованием одного из родительских каталогов. Средствами ТС так не получится. Только скриптингом.
Теперь самое главное:
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
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10415
Location: Россия, Саратов

Post (Separately) Posted: Sat Feb 02, 2013 21:45    Post subject: Reply with quote

Petr_Ch
Ещё раз: оверквотинг запрещён правилами форума. Абсолютно никому не нужное полное цитирование предыдущих постов удалено.
И я хотел бы со своей стороны понять: чем не устраивает редактирование в режиме показа файлов без подкаталогов и зачем вообще все эти переносы? Видимо, в самом деле надо пояснить, что же понимается под редактированием.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Sun Feb 03, 2013 22:32    Post subject: Reply with quote

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
View user's profile Send private message
Petr_Ch



Joined: 02 Feb 2013
Posts: 17

Post (Separately) Posted: Fri Feb 08, 2013 23:54    Post subject: Reply with quote

Flasher wrote:
Ок. Вижу разницу. Появилось дополнительное условие с переименованием одного из родительских каталогов.

Вы немного нетак меня поняли. Переименовывать или удалять никаких каталогов не надо. И к файлам надо не номера дописывать, а имя папки над папкой "pic".
Avada, извиняюсь за оверквотинг, но явно нужны ещё пояснения.
Путь был:
C:\111111\abrakadabra\pic\0000001.jpg
Путь стал:
D:\temp\abrakadabra_0000001.jpg
Где "D:\temp\" даны просто для примера. Это может быть родительский каталог или просто вторая панель. Не важно.

А в целом ваш скрипт сработал, но он файлы ни на дюйм не сдвинул. Просто переименовал исходную папку.

Batya wrote:
Пропустил "Then"...

Подправил скрипт. Запускаю → за долю секунды что-то происходит, но в результате всё остаётся как было.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Feb 09, 2013 00:03    Post subject: Reply with quote

Petr_Ch wrote:
Переименовывать или удалять никаких каталогов не надо.
Как запрашиваем, так и получаем:
Petr_Ch wrote:
преобразовать его в массив "Б".

Petr_Ch wrote:
но он файлы ни на дюйм не сдвинул.
На какой папке курсор и какие параметры? Если опять нет желания обращаться к памятке с рекомендациями при проблемах, то это не моя вина.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Petr_Ch



Joined: 02 Feb 2013
Posts: 17

Post (Separately) Posted: Sat Feb 09, 2013 21:14    Post subject: Reply with quote

Flasher wrote:
На какой папке курсор и какие параметры?

(c:\temp\XXXX\pic\0001.jpg)
Курсор на папках XXXX.
Параметры %V c:\temp "11"
Как и писал ранее скрипт просто переименовывает temp в 11.
Flasher wrote:
Если опять нет желания обращаться к памятке с рекомендациями при проблемах, то это не моя вина.

Что за памятка?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Feb 09, 2013 21:28    Post subject: Reply with quote

Petr_Ch wrote:
Параметры %V c:\temp "11"
А где в шапке скрипта указано, что параметра 3? c:\temp тут ни к чему вообще. Кавычки для имени (11) без пробелов не требуются, опять же они не указаны.
Petr_Ch wrote:
Что за памятка?
Единственная тема, прикрепленная к подфоруму. Неужели не видно?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Petr_Ch



Joined: 02 Feb 2013
Posts: 17

Post (Separately) Posted: Mon Feb 11, 2013 15:19    Post subject: Reply with quote

Flasher wrote:
А где в шапке скрипта указано, что параметра 3?

Но ваш параметр %V 22222222 выдаёт сообщение "укажите два параметра".
В памятке ответов не нашел((

У меня тотал 7.04a.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Feb 11, 2013 15:44    Post subject: Reply with quote

Petr_Ch
Речь про проблемы, нижняя часть памятки.
Не удивительно, что выдаёт. %V в такой старой версии ТС и в помине не было. Заменить на %P%N.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Mon Feb 11, 2013 16:55    Post subject: Reply with quote

Petr_Ch wrote:
Подправил скрипт. Запускаю → за долю секунды что-то происходит, но в результате всё остаётся как было.

Выполнено ли следующее?
Batya wrote:
Также не следует забывать, что исходный (и нынешний модифицированный) скрипт работает с выделенными папками.

Из этого примера это папки
C:\temp\11111111111\1
C:\temp\11111111111\2
C:\temp\11111111111\3
C:\temp\11111111111\4
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Petr_Ch



Joined: 02 Feb 2013
Posts: 17

Post (Separately) Posted: Tue Feb 12, 2013 10:39    Post subject: Reply with quote

Flasher
%P%N не помогло.
Обновил версию тотала до 8.1, но скрипт по прежнему всего лишь переименовывает папку, на которой курсор. (независимо от кол-ва выделенных папок).

Версия wscript.exe 5.7.0.18066
WinXP x86

Batya
Выделять пробовал самые разные папки. Не помогает.

Параметр %L
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Feb 12, 2013 12:25    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 2 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group