Добавлено: Чт май 07, 2015 12:09
Разумеется.sa писал(а):Оба захода без параметров?
Форум поддержки пользователей Total Commander
https://forum.wincmd.ru/
Разумеется.sa писал(а):Оба захода без параметров?
Изволь изъясниться понятным языком.sa писал(а):два захода внутри самого скрипта
Код: Выделить всё
'==========================================================
' Именовать файлы нумерацией в структуре активного каталога
' в чётких пределах от 1-цы до числа рассматриваемых файлов
' Условие: путь запуска - пустой
' Параметр (необязательный): <фильтр-список расширений>
' Пример: *.jpg;*.jpeg
'==========================================================
With WScript.Arguments
If .Count Then If .Item(0) <> "" Then Filt = .Item(0) Else Filt = "*.*" End if
End With : Set Dict = CreateObject("Scripting.Dictionary")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ShA = CreateObject("Shell.Application")
Set SC = CreateObject("ScriptControl")
With CreateObject("WScript.Shell")
CD = .CurrentDirectory
If CD = FSO.GetParentFolderName(WScript.ScriptFullName) Then WScript.Quit
SC.Language = "JScript" : SC.AddCode("function VBSort(array){return(new VBArray"&_
"(array).toArray().sort(function(a,b){return parseInt(a,10)-parseInt(b,10)}));}")
ForFolder CD : .SendKeys "^R"
End With
Sub ForFolder(Path)
Set Items = ShA.NameSpace(Path).Items : Count = Items.Count
For i = 1 to Count
If Filt <> "*.*" Then Flt = Replace(Filt, "*", i) Else Flt = i & ".*"
Items.Filter 224, Flt : Cnt = Items.Count
If Cnt = 0 Then Exit For
Next : Items.Filter 64, Filt
If Items.Count Then
If i > Count Then T = 1 : i = 1
For Each F in Items : Dict.Add F, "" : Next
For Each F in SC.Run("VBSort", Dict.Keys)
Ext = FSO.GetExtensionName(F) : If Ext <> "" Then Ext = "." & Ext
BN = FSO.GetBaseName(F) : N = i & Ext
If IsNumeric(BN) Then
If T = "" And (CLng(BN) > i Or Clng(BN) < 1) Then
If Not FSO.FileExists(Path & "\" & N) And Not _
FSO.FolderExists(Path & "\" & N) Then F.Name = N End If : i = i + 1
End If
Else
While FSO.FileExists(Path & "\" & N) Or FSO.FolderExists(Path & "\" & N)
i = i + 1 : N = i & Ext
Wend : F.Name = N
End If
Next : Dict.RemoveAll
End If : Items.Filter 160, "*"
For Each Fold in Items : ForFolder Fold.Path : Next
End SubПочему мне? РазвеFlasher писал(а):Я, кажется, понял, что тебе нужно.
это не то же самое, чтоИменовать файлы нумерацией в структуре активного каталога
в чётких пределах от 1-цы до числа рассматриваемых файлов
?a-dasler писал(а):Как во всех подкаталогах сразу переименовать просто по порядку номеров?
То есть 1.jpg, 2.jpg, 3.jpg....
Это надо у тебя спросить, почему последние три страницы тебя никак не отпустит, в то время как постановщика исходной задачи давно всё устроило.sa писал(а):Почему мне?
Если рассматривать детально, то не совсем. И тут нечего больше обсуждать.sa писал(а):это не то же самое
Правильно! Поправишь, когда кто-то наткнётся. Ещё и спасибо получишь.Flasher писал(а):оставлю, пожалуй, всё как есть.
Как я уже ранее предлагал, забираем vbs-скрипт по ссылке. Параметры следующие: %WL .+([0-9]{6}) $1Владимир Айвион писал(а):Пример: У нас имеется 4 фотографии товарной позиции, с наименованиями:
1. Vacuum jug black 502941 (1)
2. Vacuum jug black 502941
3. Vacuum jug black pouring 502941
4. Vacuum jug black tea 1 502941
Что я хочу видеть:
1. 502941
2. 502941_2
3. 502941_3
4. 502941_4