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 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Dimsok



Joined: 17 Aug 2014
Posts: 578

Post (Separately) Posted: Wed Apr 25, 2018 01:22    Post subject: Переименование файлов и папок по списку из буфера обмена Reply with quote

Имеется скрипт (и самостоятельная кнопка) для переименования выделенного файла из буфера. Хотелось бы иметь средство, позволяющее переименовывать все выделенные файлы из буфера вида, в который они заносятся туда по команде "выделение/копировать имена файлов в буфер".

Last edited by Dimsok on Wed Apr 25, 2018 06:02; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Apr 25, 2018 02:31    Post subject: Reply with quote

Избыточное описание.
Напрашиваются 2 проблемы:
1. Выделенных файлов 50, а в буфере список из 20. Или наоборот. Что тогда?
2. Имена из буфера полностью или частично уже есть в получателе (в т.ч. среди выделенных). И?

Сделал пока так:
1. Обработка меньшего из чисел в буфере/получателе.
2. Пропускать переименование файла, попавшего под совпадение.

Code:
'=================================== VBS ===================================
' Переименовать выбранные в активной панели файлы по списку из буфера обмена
' Условие:  путь запуска — пустой
' Параметр: %WF
'===========================================================================
Option Explicit : Dim REx, Clip, Max, i, List, N, nN

If WSH.Arguments.Count = 0 Then WSH.Quit
Set REx = New RegExp : REx.Global = True
REx.Pattern = "^[\r\n]+|[\r\n]+(?=\r?\n)|[\r\n]+$"
With GetObject("New:1C3B4210-F441-11CE-B9EA-00AA006B1A69)")
  .GetFromClipboard : Clip = Split(REx.Replace(.GetText,""),vbLf)
End With : Max = UBound(Clip) : i = 0 : If Max = -1 Then WSH.Quit
With CreateObject("Scripting.FileSystemObject")
  Set List = .OpenTextFile(WSH.Arguments(0),,,-1)
  Do : N = List.ReadLine : nN = Clip(i)
    If .FileExists(N) And Not .FileExists(nN) Then .GetFile(N).Name = nN
    If Max <> i Then i = i + 1 Else Exit Do
  Loop Until List.AtEndOfStream
  List.Close : Set List = Nothing
End With

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



Joined: 17 Aug 2014
Posts: 578

Post (Separately) Posted: Wed Apr 25, 2018 04:58    Post subject: Reply with quote

Спасибо, так годится. Что исправить для варианта, чтобы не менять расширение?
И ещё бы добавить возможность переименовывания папок.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Apr 25, 2018 05:49    Post subject: Reply with quote

Для папок заголовок топика надо править.

 С добавками:

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Wed May 02, 2018 03:46; edited 1 time in total
Back to top
View user's profile Send private message
Avada



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

Post (Separately) Posted: Wed Apr 25, 2018 08:36    Post subject: Reply with quote

Заголовок темы приведён в более адекватный содержанию вид.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
ZZZAlexZZZ



Joined: 08 Mar 2014
Posts: 60

Post (Separately) Posted: Fri Apr 27, 2018 17:49    Post subject: Reply with quote

Flasher
Для данного скрипта вылезает ошибка:
Code:

Сценарий:   D:\Cl.vbs
Строка:   11
Символ:   1
Ошибка:   Невозможно создание объекта контейнером ActiveX: 'GetObject'
Код:   800A01AD
Источник:    Ошибка выполнения Microsoft VBScript

В чем может проблема, куда копать(путь запуска пустой)?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Apr 27, 2018 21:45    Post subject: Reply with quote

ZZZAlexZZZ
Не думал, что кто-то сюда ещё нагрянет (запрос специфический). Smile TCx64? У Dimsok XPx32. Переноска wscript.exe для TCHelper найдётся в наличии? Если да, то случай подходящий. Если нет, то путь спереди можно брать такой: %SystemRoot%\SysWOW64\wscript.exe. Также для обоюдного случая можно запилить переменную в Autorun.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
ZZZAlexZZZ



Joined: 08 Mar 2014
Posts: 60

Post (Separately) Posted: Sat Apr 28, 2018 09:50    Post subject: Reply with quote

Flasher
Спасибо, периодически приходится делать нечто подобное, поэтому работа с буфером в vbs без утилит очень интересует.
Что касается битности - верно, TC64, система тоже.
Вариант с %SystemRoot%\SysWOW64\wscript.exe подходит больше, т.к. если до конца описывать, то работа через терминалку на сервере, куда ничего и не поставить и не скопировать.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Apr 28, 2018 11:00    Post subject: Reply with quote

ZZZAlexZZZ wrote:
поэтому работа с буфером в vbs без утилит очень интересует.
Да тут, в общем-то, большинство примеров и так без утилит.
ZZZAlexZZZ wrote:
система тоже.
Система вторична. Значение имеет битность родительского процесса.
ZZZAlexZZZ wrote:
работа через терминалку на сервере, куда ничего и не поставить и не скопировать.
Т.е. "не скопировать"? В подпапку ТС нельзя скопировать wscript.exe? Shocked
И как уже намекнул, с переменной %wscript% было бы универсальней:
autorun.cfg wrote:
If %SYSINFO_OSARCH% = 32 Then
SetEnv wscript %SystemRoot%\System32\wscript.exe
Else
SetEnv wscript %SystemRoot%\SysWOW64\wscript.exe

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



Joined: 08 Mar 2014
Posts: 60

Post (Separately) Posted: Sat Apr 28, 2018 11:38    Post subject: Reply with quote

Flasher
Quote:
Т.е. "не скопировать"? В подпапку ТС нельзя скопировать wscript.exe?

TCHelper нельзя на терминальную машину скопировать, неоткуда взять.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Apr 28, 2018 11:42    Post subject: Reply with quote

ZZZAlexZZZ
А где в цитате TCHelper? Smile
TC находится на терминальной машине? Т.е. не переноска?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
ZZZAlexZZZ



Joined: 08 Mar 2014
Posts: 60

Post (Separately) Posted: Sat Apr 28, 2018 11:55    Post subject: Reply with quote

Flasher
Quote:
А где в цитате TCHelper?

Сюда смотрел, на это ориентировался как на вариант решения.
Quote:
У Dimsok XPx32. Переноска wscript.exe для TCHelper найдётся в наличии?

Да и не в нем конкретно дело, никиких утилит не добавить, "голая" винда Very Happy
Quote:
TC находится на терминальной машине? Т.е. не переноска?

Да, админ как поставил. Могу только скрипты набивать)
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Apr 28, 2018 12:03    Post subject: Reply with quote

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



Joined: 08 Mar 2014
Posts: 60

Post (Separately) Posted: Sat Apr 28, 2018 12:23    Post subject: Reply with quote

Flasher
Нас за оффтоп не расстреляют)?
 Hidden text
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Apr 28, 2018 12:59    Post subject: Reply with quote

ZZZAlexZZZ
Ответ на косвенный вопрос может иначе разрешить проблему. В его папке физический (не условный) запрет на создание файлов с определёнными расширениями? Так?
_________________
Автору сборки 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 1, 2  Next
Page 1 of 2

 
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