View previous topic :: View next topic |
Author |
Message |
KarS
Joined: 21 Apr 2006 Posts: 102 Location: г. Абакан
|
(Separately) Posted: Sun Dec 01, 2019 14:15 Post subject: |
|
|
Flasher,
- удалил в 65 строке всё, начиная с двоеточия - появляется ошибка:
picture
- опробовал рекомендацию из поста - вроде заработало нормально, без удаления части кода в строке 65. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Dec 12, 2019 20:43 Post subject: |
|
|
KarS
1. Что-то лишнего удалили. Create — не переменная. 65-ю строку всего-то надо было привести к 'Loop Until List.AtEndOfStream'.
2. Посмотрел код — оказалось, нужно несколько мелких правок.
Новый вариант: Code: | '••••••••••••••••••••••••••••••••••••••••• VBS ••••••••••••••••••••••••••••••••••••••••
' Cоздать указанное число копий/пустышек для каждого выбранного элемента
' с добавлением счётчика перед именами, начиная с самого крайнего номера
' Условие: привязка Ctrl+Alt+Shift+R к 540/cm_RereadSource
' Параметры: %WL "<путь назначения>" <число копий> <вставка после №> <расширение файла>
' Если указан 5-й параметр, то создаваться будут пустые элементы
' Ключ для смены начала счётчика с единицы на двойку: /2
' Примеры: %WL "%P" /2 | %WL "%T" "" _ | %WL "%P" 5 . | %WL "%T" 1 "" txt
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••
Option Explicit: Dim C, Two, List, Cn, Path, Count, Px, Ext, ShA, FSO, Rgx,_
F, FN, Test, Ex, BN, Max, i, n, M, Items, iP, FF, Exist, FP, Cnt, Num, Check
With WSH.Arguments
C = .UnNamed.Count : Two = .Named.Exists("2") : If C = 0 Then WSH.Quit
If C = 1 Then MsgBox "Должно быть указано не менее 2-х параметров!", 48 : WSH.Quit
List = .Item(0) : Path = .Item(1) : If C > 2 Then Count = .Item(2)
If Count = "" Then Count = Trim(InputBox(String(4, vbLf) & "Введите число создаваемых копий"&_
vbLf & "для каждого выбранного элемента:", Space(13) & "Создание копий выбранных элементов"))
If Not IsNumeric(Count) Then WSH.Quit : End If : If C > 3 Then Px = .Item(3)
If C = 5 Then If .Item(4) <> "" Then Ext = "." & .Item(4) End If
End With : Set Rgx = New RegExp : Rgx.Pattern = "^((0*)\d+)(\D.*)?$"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ShA = CreateObject("Shell.Application")
Set List = FSO.OpenTextFile(List,,,-1)
Do : F = Trim(List.ReadLine)
FN = FSO.GetFileName(F)
If FSO.FolderExists(F) Then
Test = 1 : BN = FN
ElseIf FSO.FileExists(F) Then
Test = 0 : BN = FSO.GetBaseName(FN)
Ex = FSO.GetExtensionName(F) : If C < 5 And Len(Ex) Then Ext = "." & Ex
End If : Max = 0 : If C = 5 Then FN = FSO.GetBaseName(F) & Ext
FP = FSO.BuildPath(Path, FN) : Exist = (FSO.FolderExists(FP) Or FSO.FileExists(FP))
If Rgx.Test(BN) Then
M = Rgx.Execute(BN)(0).SubMatches(0) : Max = M : BN = Right(BN, Len(BN) - Len(M))
ElseIf Left(BN, Len(Px)) <> Px Then
n = 1
For i = 1 To Len(Px)
If Left(Px, i) = Left(BN, i) Then n = i
Next : BN = Mid(Px, n) & BN
End If : Set Items = ShA.NameSpace(Path).Items
Items.Filter 73952, "*" & BN & Ext
For Each i in Items
iP = i.Path : If Test = 0 Then FF = FSO.GetBaseName(iP) Else FF = FSO.GetFileName(iP)
If Replace(Ext, ".", "") = FSO.GetExtensionName(iP) Then _
If Rgx.Test(FF) Then Set FN = Rgx.Execute(FF)(0) : M = FN.SubMatches(0) :_
If CLng(M) > CLng(Max) And FN.SubMatches(1) = Left(FN.SubMatches(1), Len(BN & Px)) Then Max = M
Next : Cnt = Count : If Not Exist Then Create Test, F, FP, Ext : Cnt = Count - 1
If Cnt Then
For i = 1 To Cnt
If Rgx.Execute(Max)(0).SubMatches(1) = "" Then
Max = Max + 1
Else
If Len(Max + 1) >= Len(Max) Then Max = Max + 1 Else _
Max = String(Len(Max) - Len(Max + 1), "0") & Max + 1
End If : If Two And Max < 2 Then Max = 2
FP = FSO.BuildPath(Path, Max & BN) & Ext
Create Test, F, FP, Ext
Next
End If
Loop Until List.AtEndOfStream : CreateObject("WScript.Shell").SendKeys "^+R"
Sub Create(T, Fl, PF, E)
If T Then
If C = 5 Then FSO.CreateFolder PF Else FSO.GetFolder(Fl).Copy PF, 0
Else
If C = 5 Then FSO.CreateTextFile PF Else FSO.CopyFile Fl, PF, 0
End if
End Sub |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
KarS
Joined: 21 Apr 2006 Posts: 102 Location: г. Абакан
|
(Separately) Posted: Sat Dec 14, 2019 14:28 Post subject: |
|
|
Flasher, спасибо.
Код работает хорошо.
В этом варианте у меня работает нормально и без привязки Ctrl+Alt+Shift+R к 540/cm_RereadSource
Надеялся, может появиться "Ключ для смены места счётчика в начале или в конце имени файла", но видимо, не в этот раз
Всё равно, спасибо. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 14, 2019 14:37 Post subject: |
|
|
KarS
Пож-та. Привязка нужна, если хочется более быстрого проявления результата.
Сам по себе момент со счётчиком спереди специфический, а догружать в цикл ряд условий в угоду скорости не хотелось. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
KarS
Joined: 21 Apr 2006 Posts: 102 Location: г. Абакан
|
(Separately) Posted: Sat Dec 14, 2019 15:59 Post subject: |
|
|
Если автор говорит, что привязка нужна - значит сделаем
Согласен, везде нужен баланс. |
|
Back to top |
|
|
sania.mamaeff
Joined: 19 Dec 2019 Posts: 1
|
(Separately) Posted: Thu Dec 19, 2019 14:49 Post subject: |
|
|
Flasher
Привет. Мне хочется копировать файлы по папкам с переименованием файлов. Я так понимаю этот скрипт делает именно это. Но я не могу понять как им пользоваться. Прочитал памятку для новичков, не помогает. Можно ли где-то посмотреть просто понятное видео в котором объясняют просто и понято как использовать скрипты? |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10276 Location: Россия, Саратов
|
(Separately) Posted: Thu Dec 19, 2019 15:00 Post subject: |
|
|
sania.mamaeff
Информация о правилах пользования скриптами в существующей уже, мягко говоря, не первый год памятке изложена вполне просто и понятно, никакие видео в дополнение к ней не предусмотрены и не планируются. Придётся разбираться с тем, что написано.
А имя того, к кому вы обращаетесь, переносится в пост просто щелчком по его нику в левой части подходящего сообщения. Исправлено. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Dec 19, 2019 15:25 Post subject: |
|
|
sania.mamaeff wrote: | Мне хочется копировать файлы по папкам с переименованием файлов. | Весьма расплывчатое пожелание.
sania.mamaeff wrote: | Я так понимаю этот скрипт делает именно это. | Ряд здешних скриптов (для новичков актуален с TCKB) копируют файлы в заданную папку/панель, переименование является лишь потенциальным действием. По остальному добавить нечего.
Avada wrote: | А имя того, к кому вы обращаетесь | Поправочка — ник. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10276 Location: Россия, Саратов
|
(Separately) Posted: Fri Dec 20, 2019 08:40 Post subject: |
|
|
sania.mamaeff
К сказанному добавлю, что есть случаи копирования с переименованием, когда в скриптах вообще нет надобности. Разверните кнопкой "Опции" диалог копирования и посмотрите, что там ещё есть (в том числе в выпадающем списке "Настройки перезаписи"). А сейчас по вашему изложению задачи совершенно невозможно понять, что же нужно на самом деле. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Singlelol
Joined: 05 Jun 2020 Posts: 8
|
(Separately) Posted: Fri Jun 05, 2020 17:48 Post subject: |
|
|
Доброго времени суток! Пролистал много сообщений но не смог найти.
Есть набор папок содержащих файлы *.jpg.
Требуется скопировать с переименованием папок формат [a-z0-9] по счетчику.
И (вывести/сохранить в файл) пути [старый путь/имя файла] [/iblock/новый путь/имя файла].
Видел и групповое переименование и копирование, но с сохранением старых и новых путей не нашел. Если я слепой, то ткните пальцем. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10276 Location: Россия, Саратов
|
(Separately) Posted: Fri Jun 05, 2020 18:29 Post subject: |
|
|
Singlelol
Тыкать пальцем пока некуда, потому как лично я, например, вообще ничего из запроса не понял. Ни про пути, ни про переименование папок по счётчику, ни про то, какое отношение эти выведения/сохранения имеют к групповому переименованию. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Singlelol
Joined: 05 Jun 2020 Posts: 8
|
(Separately) Posted: Fri Jun 05, 2020 18:36 Post subject: |
|
|
Ок. На примере. \Kids Smartwatch CNE-KW21BL Blue\orig.jpg переносится в a01\orig.jpg
и выводится/сохраняются в файл пути в формате \Kids Smartwatch CNE-KW21BL Blue\orig.jpg /iblock/a01/orig.jpg |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10276 Location: Россия, Саратов
|
(Separately) Posted: Fri Jun 05, 2020 18:52 Post subject: |
|
|
Singlelol
Ещё раз: при чём тут групповое переименование? И что означает "выводится"? Где? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Singlelol
Joined: 05 Jun 2020 Posts: 8
|
(Separately) Posted: Fri Jun 05, 2020 19:02 Post subject: |
|
|
Скорее всего не причем переименование, т.к. сами файлы не переименовываются, а создаются новые каталоги.
Выводится или на экран окном или в буфер обмена. Так его можно будет вставить в файл. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 05, 2020 22:24 Post subject: |
|
|
Singlelol
С тредом явно мимо клуба.
Нужно jpg из всех папок скопировать в одну общую?
В выводе косая черта в разные стороны целенаправлено задана? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
|
|
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
|