Удалить часть имени в файлах с заменой
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4  :| |:
Total Commander -> Автоматизация Total Commander

#46:  Author: ЧиполлиноLocation: Орёл PostPosted: Sun Nov 10, 2019 22:52
    —
Вопрос:
Как удалить из имен выделенных файлов имена, родительских каталогов, при условии, что эти имена точно присутствуют в именах выделенных файлов.

#47:  Author: AvadaLocation: Россия, Саратов PostPosted: Sun Nov 10, 2019 23:42
    —
Чиполлино
Имена родительских каталогов могут быть в разных файлах какими угодно и располагаться где угодно. Как можно вычислить для произвольного файла, где там указан именно его родительский каталог, а не что-то другое? Для каждого файла выборки выяснять его собственный родительский каталог и искать тот же текст в имени? Не факт, что это возможно.

#48:  Author: FlasherLocation: Москва PostPosted: Mon Nov 11, 2019 00:01
    —
Avada wrote:
Не факт, что это возможно.
А что тут невозможного? Тут проблема в другом. После отрезания имена могут совпасть с уже имеющимися, в т. ч. уже обработанными.

Чиполлино
Как? Скриптом. И условие слишком очевидно, чтобы его указывать.
А вот про необходимость затрагивать расширения и действие при совпадении новых имён с имеющимися пояснить необходимо.

#49:  Author: Monarch-LFV PostPosted: Mon Nov 11, 2019 04:59
    —
Чиполлино wrote:
Как удалить из имен выделенных файлов имена, родительских каталогов, при условии, что эти имена точно присутствуют в именах выделенных файлов.

Это легко решается мощной утилитой Андрея Аверина TCIMG (это не реклама, а путь решения задачи).
Код кнопки после установки утилиты:
Code:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Plugins\exe\TCIMG\TCIMG.exe"
renms=%L||<info=o91"%Px"//>!!
%COMMANDER_PATH%\Plugins\exe\TCIMG\TCIMG.dll,1
Удалить в имени выделенных файлов имя родительского каталога
%COMMANDER_PATH%\Plugins\exe\TCIMG\

-1

#50:  Author: FlasherLocation: Москва PostPosted: Mon Nov 11, 2019 14:58
    —
Чиполлино
Короче, пока без расширений, но с регистронезависимостью, автопереименованием по счётчику при совпадении, работой в режимах без подкаталогов и найденных поиском файлов, поддержкой Юникода и длинных путей (260+):
Code:
'============================== VBS ==============================
' Убрать из базовых имён выбранных файлов имена родительских папок
' Параметр: %WL
'=================================================================
Option Explicit : Dim FSO, List, F, Ext, PF, PN, BN, FN, c
If WSH.Arguments.Count = 0 Then WSH.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
Set List = FSO.OpenTextFile(WSH.Arguments(0),,,-1)
Do: F = List.ReadLine
  If Right(F, 1) <> "\" Then
    Ext = FSO.GetExtensionName(F)
    If Len(Ext) Then Ext = "." & Ext
    PF = "\\?\" & FSO.GetParentFolderName(F) & "\"
    PN = FSO.GetFileName(PF) : BN = FSO.GetBaseName(F)
    If InStr(1, BN, PN, 1) > 0 And Len(PN) > 0 Then
      BN = Replace(BN, PN, "", 1, -1, 1)
      If Len(BN) Then
        FN = BN & Ext : c = 0
        While (FSO.FileExists(PF & FN) OR FSO.FolderExists(PF & FN))
          c = c + 1 : FN = BN & " (" & c & ")" & Ext
        Wend
        If Len(F) > 259 Or Len(PF & FN) > 259 Then F = "\\?\" & F
        FSO.GetFile(F).Name = FN
      End If
    End If
  End If
Loop Until List.AtEndOfStream : List.Close
Set List = Nothing : Set FSO = Nothing

#51:  Author: ЧиполлиноLocation: Орёл PostPosted: Mon Nov 11, 2019 23:32
    —
Flasher wrote:
Короче, пока без расширений

Спасибо.

 !  Avada:
Последующая дописка удалена, комментарии в ЛС.



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


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

Goto page Previous  1, 2, 3, 4  :| |:
Page 4 of 4

Powered by phpBB © 2001, 2005 phpBB Group