Flasher

|
Posted: Mon Mar 20, 2017 15:16 Post subject: |
|
|
Badboy
Без оверквотинга никак? Снизу памятки в первом пункте что написано?
Сам могу такую вещь предложить (в примерах 2 варианта решения):
Code: | '================================== VBS ================================
' Перемещение выбранных файлов в создаваемые при необходимости каталоги
' с тем же базовым именем или его частью, заданной регулярным выражением
' Параметры: %WL "<путь получателя>" <регулярное выражение>
' Условие: искомая часть в регулярном выражении записывается в скобках.
' Если второй параметр не задан или пуст, то
' получателем будет родительский каталог файла.
' Примеры: %WL "%T" | %WL "" ^(\d+\.\d+\.\d+) | %WL "%T" (.{10})
'=======================================================================
Set A = WSH.Arguments : C = A.Count : If C = 0 Then WSH.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ShAp = CreateObject("Shell.Application")
Set List = FSO.OpenTextFile(A(0),,,-1)
If C = 3 Then _
Set Reg = New RegExp : Reg.Global = True:_
Reg.IgnoreCase = True : Reg.Pattern = A(2)
Do : F = Trim(List.ReadLine)
If FSO.FileExists(F) Then
BN = FSO.GetBaseName(F)
If IsObject(Reg) Then If Reg.Test(BN) Then _
BN = Reg.Execute(BN)(0).Submatches(0) Else BN = ""
If Len(BN) Then
NF = "" : If C > 1 Then If A(1) <> "" Then NF = FSO.BuildPath(A(1),BN)
If NF = "" Then NF = FSO.BuildPath(FSO.GetParentFolderName(F), BN)
If Not FSO.FolderExists(NF) Then FSO.CreateFolder(NF)
ShAp.NameSpace(NF).MoveHere F
End If
End If
Loop Until List.AtEndOfStream : List.Close | Если имя файла не соответствует искомой в выражении части, то он остаётся на месте. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Mon Mar 20, 2017 16:39; edited 1 time in total |
|