'•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Добавить в имена выбранных архивов отсутствующие расширения вложенных одиночных файлов
' Условие: Наличие инсталляции системного аддона TC4Shell
' Страница загрузки: http://www.tc4shell.com/ru/download/
' Параметр: %WL
'•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
If WSH.Arguments.Count = 0 Then WSH.Quit
Set Rgx = New RegExp
Set ShA = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Rgx.IgnoreCase = True : Rgx.Pattern = "^([A-z\d]+_|00[01]|7z(|ip)|a(01|rj?|rduboy|p" &_
"[km]|sd|zw2|zz)|b(64|doc|in|oz|ps|up|z(|ip)2?)|c(ab|apx|b[7crtz]|bds|h[iqmw]|off|o" &_
"mpPkg_Hauptwerk_rar|pgz|pio|ramfs|rx)|d(32|(a|ock)zip|eb|esktop|ylib|mg|mm[ptx]|o[c"&_
"t][mx]?|p[st]|z)|e(cs|dz|f[iw]|rx|sd|pub|tt?|xe|xt[234]?)|fat|g(adgeprj|bp|g|(|nu)t"&_
"ar|nm|numeric|z(|ip?)2?)|(graph|ht|p)mlz|h(cl|fsx?|mxz|tb|x[iqrsw])|i(5[sz]|as|hex|"&_
"m[agz]|p[agk]?|psw|s[ox]|ta)|jar|jgz|l(i[bt]|ibzip|z([oh]?|ma)|ha|qm|xf)|m(br|ct|cg"&_
"ame|world|ht(ml)?|pz(ip)?|s[ioptu]|slz|st14|u[bi])|n(ex|fl|otebook|(si|tf)s|th)|o(b"&_
"[bj]|d[bfgpst]|ebzip|ex|nepkg|rb|sz|t[pst]|va|z)|p(ax|bi[tx]|cv|et|i[mz]|k[34g]|mv|"&_
"[op]t[xm]?|p[as][mx]?|p?md|r[dsvx]|ro[45]x|sz|ub)|qcow(|2c?)|quiz|quox|[rs]00|r(0|a"&_
"r5?|pm|p9|z)|s(7z|cap|[dtx]c|[dtx]w|d[adz]|f[sx]|l[ex]|m[fz]|nb|ob|quashfs|t[di]|ui"&_
"te|wm|x[dim])|t(ar(dist)?|[abglx]z|bs|bz2|g|hmx|lb|lzma|wz(ip)?|xtz)|u(3p|box|deb|d"&_
"f|efif|os|seq|ue)|v(di|hd|i[mp]|mdk|oca|or|s(d|ix?|s[mx])|ym)|w(b?a|bk|db|ebz|im|p["&_
"st]|sb|w[dps])|x(apk|ar|l(am?|s[bmx]?|t[mx]?|r|w)|p[is]|zm?|xe)|z(ad|i?|ipx?|m9|pi))$"
With FSO.OpenTextFile(WSH.Arguments(0),,,-1)
Do : F = .ReadLine : Ext = FSO.GetExtensionName(F)
If FSO.FileExists(F) And Rgx.Test(Ext) Then
Set Arch = ShA.NameSpace(F)
If Arch.Self.IsFolder Then
Set Items = Arch.Items : Items.Filter 73952, "*"
If Items.Count = 1 Then
Set N = Items.Item(0) : P = N.Parent.Self.Parent.Self.Path & "\"
c = 0 : BN = FSO.GetBaseName(F) : Ex = FSO.GetExtensionName(N.Path)
If Len(Ex) And FSO.GetExtensionName(BN) <> Ex Then
Nm = BN & "." & Ex & "." & Ext
While FSO.FileExists(P & Nm) Or FSO.FolderExists(P & Nm)
c = c + 1 : Nm = BN & "." & Ex & " (" & c & ")." & Ext
Wend : FSO.GetFile(F).Name = Nm
End If
End If
End If
End If
Loop Until .AtEndOfStream : .Close
End With |