Flasher
|
Posted: Mon Nov 11, 2019 14:58 Post subject: |
|
|
Чиполлино
Короче, пока без расширений, но с регистронезависимостью, автопереименованием по счётчику при совпадении, работой в режимах без подкаталогов и найденных поиском файлов, поддержкой Юникода и длинных путей (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 |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|