'============================== 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 |