Копирование с переименовыванием по счетчику

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Iori
Сообщения: 552
Зарегистрирован: Ср апр 25, 2012 20:33

Сообщение Iori »

Flasher
В твоём скрипте
Cоздать указанное число копий/пустышек для каждого выделенного элемента с добавлением счётчика в скобках, начиная с последнего номера
Параметры: %WL "<путь назначения>" <число копий> <расширение нового файла>
Если указан 4-й параметр, то создаваться будут пустые элементы
Ключ на расположение счётчика в конце полных имён копий файлов
Можно ли добавить выскакивающее окошко что всё мол OK, как это делает твой 7зип упаковщик скрипт, если скажем копия больше 10мб или 20мб.

А то когда делаешь копию очень большой папки, то не известно когда скрипт закончит. И не понятно если можно работать с оригиналом или ещё нет.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Iori
В следующий раз ссылку на код давай, как по памятке.
Тут куда проще и быстрее не на размеры копий смотреть, а на время. Могу параметром число секунд сделать, если устроит.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Iori
Сообщения: 552
Зарегистрирован: Ср апр 25, 2012 20:33

Сообщение Iori »

Flasher писал(а):В следующий раз ссылку на код давай, как по памятке.
Я не смог найти твой скрипт. Может ты его убрал потом.
Выложил по катом.
[cut]

Код: Выделить всё

'••••••••••••••••••••••••••••••••••• VBS •••••••••••••••••••••••••••••••••••
' Cоздать указанное число копий/пустышек для каждого выделенного элемента
' с добавлением счётчика в скобках, начиная с последнего номера

' Параметры: %WL "<путь назначения>" <число копий> <расширение нового файла>
' Если указан 4-й параметр, то создаваться будут пустые элементы
' Ключ на расположение счётчика в конце полных имён копий файлов

' Примеры:   %WL "%P" 3   |   %WL "%P" 5 txt   |   %WL "%T" 20 /end
'•••••••••••••••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••

Option Explicit : Dim C, Cnt2End, List, Path, Count, Ext, ShA, FSO
Dim F, Test, Filt, BN, Ent, M, Items, Cnt, Ln, x, Item, Max, i, FN
 
With WSH.Arguments
  C = .UnNamed.Count : If C > 0 Then Cnt2End = .Named.Exists("end") Else WSH.Quit
  If C < 3 Then MsgBox "Должно быть указано не менее 3-х параметров!", 48 : WSH.Quit
  List = .Item(0) : Path = .Item(1) : Count = .Item(2) : If C = 4 Then Ext = "." & .Item(3)
End With: Set ShA = CreateObject("Shell.Application")
Set FSO  = CreateObject("Scripting.FileSystemObject")
Set List = FSO.OpenTextFile(List,,,-1)
Do Until List.AtEndOfStream
  F = Trim(List.ReadLine)
  If F <> "" Then
    BN = FSO.GetFileName(F)
    If FSO.FolderExists(F) Then
      Test = 1 : Filt = 73888 : Ext = ""
    Else
      Test = 0 : Filt = 73920
      If Not Cnt2End Then BN = FSO.GetBaseName(BN) :_
      If C = 3 Then Ext = "." & FSO.GetExtensionName(F)
    End If : Ent = InStrRev(BN, "(") : Max = 0
    If Ent And Right(BN, 1) = ")" Then
      M = Mid(BN, Ent + 1, Len(BN) - Ent - 1)
      If IsNumeric(M) Then Max = CLng(M)
      BN = Left(BN, Ent - 2)
    End If
    Set Items = ShA.NameSpace(Path).Items
    Items.Filter Filt, BN & " (*)" & Ext
    Cnt = Items.Count : Ln = Len(BN) + 3
    If Cnt Then
      For x = 0 to Cnt - 1
        Item = Items.Item(x) : M = Mid(Item, Ln, Len(Item) - Ln - Len(Ext))
        If IsNumeric(M) Then : If CLng(M) > Max Then Max = CLng(M) End If
      Next
    End If
    For i = 1 To Count
      FN = FSO.BuildPath(Path, BN & " (" & Max + i & ")")
      If Test Then
        If C = 4 Then FSO.CreateFolder FN Else FSO.GetFolder(F).Copy FN, 0
      Else
        If C = 4 Then FSO.CreateTextFile(FN & Ext) Else FSO.CopyFile F, FN & Ext, 0
      End if
    Next
  End If
Loop
[/cut]
Flasher писал(а):Тут куда проще и быстрее не на размеры копий смотреть, а на время. Могу параметром число секунд сделать, если устроит.
Тоже хорошая идея. Буду рад.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Iori писал(а):Я не смог найти твой скрипт.
И мне каждый раз напоминать, где искать? См. добавку.
Iori писал(а):Может ты его убрал потом.
А подобное за мной замечалось? Изображение
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Iori
Сообщения: 552
Зарегистрирован: Ср апр 25, 2012 20:33

Сообщение Iori »

Flasher писал(а):И мне каждый раз напоминать, где искать?
Ну у тебя-же не все скрипты которые на форуме, находятся на TCKB.
Flasher писал(а): См. добавку.
Спасибо. Сейчас проверю.
Flasher писал(а):А подобное за мной замечалось?
Ну вроде нет. Я помню что этот скрипт был в теме, но найти не смог.
Именно тот скрипт где ты для меня добавил параметр /END.

PS: Вроде отлично работает. :) Я сохранил в LE BOM, а то окошко показывало иероглифы.
Подскажи пожалуйста.
Что-бы заменить на окошко которое закрывается после несколько секунд
надо заменить:

Код: Выделить всё

If Sec Then If Timer - T >= CDbl(Sec) Then MsgBox "Выполнено!", 4160, " Создание копий"
на

Код: Выделить всё

If Sec Then If Timer - T >= CDbl(Sec) Then WSS.Popup "Выполнено!", 1.4, " Результат", 4160
Последний раз редактировалось Iori Вт ноя 21, 2017 00:24, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Iori
Ты лучше бы потратил 5-10 секунд на поиск, чтобы никаких сомнений или иллюзий не возникало. :wink:

Заменил на PopUp. Изначально хотел сделать, но думал, ты боишься прозевать при больших объёмах.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Iori
Сообщения: 552
Зарегистрирован: Ср апр 25, 2012 20:33

Сообщение Iori »

Flasher писал(а):Заменил на PopUp. Изначально хотел сделать, но думал, ты боишься прозевать при больших объёмах.
Спасибо, но там же вроде я могу поменять как долго будет висеть окошко манипулируя 1.4 . Это же вроде секунды.
Вообще огромное спасибо за скрипт.
Flasher писал(а):Ты лучше бы потратил 5-10 секунд на поиск, чтобы никаких сомнений или иллюзий не возникало.
Был там, просто был очень уверен что ты скрипт выложил в теме.
Память шальная стала.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Iori писал(а):но там же вроде я могу поменять как долго будет висеть окошко
Да, но это сильно не изменит ситуацию, если продолжительное время не будешь смотреть в монитор.
Iori писал(а):Это же вроде секунды.
Угу.
Iori писал(а):Вообще огромное спасибо за скрипт.
В очередной раз. Жё вуз ан при.Изображение
Iori писал(а):Был там, просто был очень уверен что ты скрипт выложил в теме.
Был, но, похоже, не посмотрел на ответ без выкладки. Изображение
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
KarS
Сообщения: 102
Зарегистрирован: Пт апр 21, 2006 16:43
Откуда: г. Абакан

Сообщение KarS »

Всем здравствуйте!
Flasher, спасибо за скрипты.
Поддержка пробелов в названии файлов - приятная мелочь, спасибо.
Есть некоторые вопросы по использованию.
1. При создании копий файла с именем "1 varios 1.docx" (не постоянно) при срабатывании скрипта (создаю в одной и той же папке 6-7 копий) появляется окно Листера. Не понятно почему. Проверял на 2-х последних Ваших версиях скрипта, опубликованных в ветке. Первая версия скрипта из ветки форума появления Листера не вызывает.
Вот думаю, это только у меня так, или в скрипте дело? У меня Win7 32b, totalcmd 9.21a.

2. Можно ли предусмотреть вставку счётчика вначале имени, а не в конце?
Может быть через указание какого-нибудь дополнительного параметра?
Понимаю, что можно всё подправить через штатную опцию группового переименования фалов. Но если уж скрипт вставляет счётчик, может есть возможность доработать? Чтобы не обращаться к дополнительным инструментам?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

KarS
1. Чтобы не тратить наше с вами время, как минимум нужно было выполнить 1 и 3 пункты снизу памятки.
2. Доработать всегда возможно, правда неясно зачем, ведь от этого только страдает сортировка.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
KarS
Сообщения: 102
Зарегистрирован: Пт апр 21, 2006 16:43
Откуда: г. Абакан

Сообщение KarS »

Flasher
1. Использую скрипт отсюда
При апробировании разместил файл скрипта в "d:\Temp\" - при выполнении скрипта выскакивал Листер.
Сейчас скрипт перенёс в "c:\Program Files\totalcmd\Utils\WHS\" - пока Листер не выскакивает.

2. Используемый мной скрипт после создания копий меняет сортировку файлов в файловой панели. Нельзя ли избежать изменения сортировки?

3.
неясно зачем, ведь от этого только страдает сортировка
Я не предполагал, что это сильно сложно. Если всё не просто, тогда переживём. :)
А вопрос об изменении места расположения счётчика - для удобства. В ряде случаев при большом количестве файлов проще найти сразу номер файла, а не его название с номером.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

KarS
1. URL на пост копируется из ссылки "Отдельно" сверху поста.
Не понимаю, как смена пути может влиять на появление Листера.
2. Ctrl+r не переназначался? Удалите в 65 строке всё, начиная с двоеточия. Либо действуйте по рекомендации из поста (со слова "предлагаю").
3. Я не давал такой оценки. Вечером посмотрю.
4. Не вижу, как в лучшую сторону может повлиять на поиск наличие числа спереди, ведь имя определяет однотипность, а не номер.
Т.е. если файлы идут так:
NameX_1.txt
NameX_2.txt
NameY_1.txt
NameY_2.txt
NameZ_1.txt
NameZ_2.txt
, то это явно лучше, чем:
1_NameX.txt
1_NameY.txt
1_NameZ.txt
2_NameX.txt
2_NameY.txt
2_NameZ.txt

Или есть нюансы?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
KarS
Сообщения: 102
Зарегистрирован: Пт апр 21, 2006 16:43
Откуда: г. Абакан

Сообщение KarS »

Flasher,
- спасибо за объяснение.
- Ctrl+r не переназначался - сообщаю. Попробую воспользоваться Вашим советом, отпишусь.
- Место счётчика в начале имени файла - моё субъективное наблюдение за собой.
Когда тороплюсь, я так быстрее нахожу нужный файл. При поиске об имени уже не думаю, а зрительно ищу только номер. Поэтому обращаю внимание на первые символы имени файла.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

KarS писал(а):зрительно ищу только номер
Зачем тогда вообще имена сохранять? Оставить одни номера, да и всё.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
KarS
Сообщения: 102
Зарегистрирован: Пт апр 21, 2006 16:43
Откуда: г. Абакан

Сообщение KarS »

Осмысленные имена нужны для других людей, чтобы им было понятнее.
Я распределяю разные 70 вариантов файлов, а студенту передаётся только 1 файл с его вариантом.
Отправить студенту файл с названием "14 вариант задания" более осмысленно, чем просто "14". Тем более большинство из студентов - девушки. :o
Ответить