Переименование файлов и папок по списку из буфера обмена
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Переименование файлов и папок по списку из буфера обмена Author: Dimsok PostPosted: Wed Apr 25, 2018 01:22
    —
Имеется скрипт (и самостоятельная кнопка) для переименования выделенного файла из буфера. Хотелось бы иметь средство, позволяющее переименовывать все выделенные файлы из буфера вида, в который они заносятся туда по команде "выделение/копировать имена файлов в буфер".

Last edited by Dimsok on Wed Apr 25, 2018 06:02; edited 1 time in total

#2:  Author: FlasherLocation: Москва PostPosted: Wed Apr 25, 2018 02:31
    —
Избыточное описание.
Напрашиваются 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

#3:  Author: Dimsok PostPosted: Wed Apr 25, 2018 04:58
    —
Спасибо, так годится. Что исправить для варианта, чтобы не менять расширение?
И ещё бы добавить возможность переименовывания папок.

#4:  Author: FlasherLocation: Москва PostPosted: Wed Apr 25, 2018 05:49
    —
Для папок заголовок топика надо править.

 С добавками:


Last edited by Flasher on Wed May 02, 2018 03:46; edited 1 time in total

#5:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Apr 25, 2018 08:36
    —
Заголовок темы приведён в более адекватный содержанию вид.

#6:  Author: ZZZAlexZZZ PostPosted: Fri Apr 27, 2018 17:49
    —
Flasher
Для данного скрипта вылезает ошибка:
Code:

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

В чем может проблема, куда копать(путь запуска пустой)?

#7:  Author: FlasherLocation: Москва PostPosted: Fri Apr 27, 2018 21:45
    —
ZZZAlexZZZ
Не думал, что кто-то сюда ещё нагрянет (запрос специфический). Smile TCx64? У Dimsok XPx32. Переноска wscript.exe для TCHelper найдётся в наличии? Если да, то случай подходящий. Если нет, то путь спереди можно брать такой: %SystemRoot%\SysWOW64\wscript.exe. Также для обоюдного случая можно запилить переменную в Autorun.

#8:  Author: ZZZAlexZZZ PostPosted: Sat Apr 28, 2018 09:50
    —
Flasher
Спасибо, периодически приходится делать нечто подобное, поэтому работа с буфером в vbs без утилит очень интересует.
Что касается битности - верно, TC64, система тоже.
Вариант с %SystemRoot%\SysWOW64\wscript.exe подходит больше, т.к. если до конца описывать, то работа через терминалку на сервере, куда ничего и не поставить и не скопировать.

#9:  Author: FlasherLocation: Москва PostPosted: Sat Apr 28, 2018 11:00
    —
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

#10:  Author: ZZZAlexZZZ PostPosted: Sat Apr 28, 2018 11:38
    —
Flasher
Quote:
Т.е. "не скопировать"? В подпапку ТС нельзя скопировать wscript.exe?

TCHelper нельзя на терминальную машину скопировать, неоткуда взять.

#11:  Author: FlasherLocation: Москва PostPosted: Sat Apr 28, 2018 11:42
    —
ZZZAlexZZZ
А где в цитате TCHelper? Smile
TC находится на терминальной машине? Т.е. не переноска?

#12:  Author: ZZZAlexZZZ PostPosted: Sat Apr 28, 2018 11:55
    —
Flasher
Quote:
А где в цитате TCHelper?

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

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

Да, админ как поставил. Могу только скрипты набивать)

#13:  Author: FlasherLocation: Москва PostPosted: Sat Apr 28, 2018 12:03
    —
ZZZAlexZZZ
Какая-то странная история. Скрипты плодить можно, а утилиты нет. Запрет на запись .exe или что? А библиотеки с плагинами?

#14:  Author: ZZZAlexZZZ PostPosted: Sat Apr 28, 2018 12:23
    —
Flasher
Нас за оффтоп не расстреляют)?
 Hidden text

#15:  Author: FlasherLocation: Москва PostPosted: Sat Apr 28, 2018 12:59
    —
ZZZAlexZZZ
Ответ на косвенный вопрос может иначе разрешить проблему. В его папке физический (не условный) запрет на создание файлов с определёнными расширениями? Так?



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group