Разумеется.sa писал(а):Оба захода без параметров?
Групповое переименование
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
На моей тестовой выборке теперь работает за два вызова.
Осталось выполнить два захода внутри самого скрипта, в случае, когда второй параметр отсутствует или 0.
Осталось выполнить два захода внутри самого скрипта, в случае, когда второй параметр отсутствует или 0.
Последний раз редактировалось sa Чт май 07, 2015 16:18, всего редактировалось 1 раз.
sa
Я, кажется, понял, что [s]тебе[/s] нужно. Пропускать первые, начиная с единицы, имена, а далее понижать номера до закрытия дыр.
Обойтись без двойного вызова не проблема, сделаю просто немного иначе.
Я, кажется, понял, что [s]тебе[/s] нужно. Пропускать первые, начиная с единицы, имена, а далее понижать номера до закрытия дыр.
Обойтись без двойного вызова не проблема, сделаю просто немного иначе.
Код: Выделить всё
'==========================================================
' Именовать файлы нумерацией в структуре активного каталога
' в чётких пределах от 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 Пт май 08, 2015 16:16, всего редактировалось 5 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Почему мне? РазвеFlasher писал(а):Я, кажется, понял, что тебе нужно.
это не то же самое, чтоИменовать файлы нумерацией в структуре активного каталога
в чётких пределах от 1-цы до числа рассматриваемых файлов
?a-dasler писал(а):Как во всех подкаталогах сразу переименовать просто по порядку номеров?
То есть 1.jpg, 2.jpg, 3.jpg....
Это надо у тебя спросить, почему последние три страницы тебя никак не отпустит, в то время как постановщика исходной задачи давно всё устроило.sa писал(а):Почему мне?
Если рассматривать детально, то не совсем. И тут нечего больше обсуждать.sa писал(а):это не то же самое
Кстати, я там ещё нашёл одну мелочь, но поскольку тебя в большей степени интересует копание в "недо.." и моих обозначениях, нежели результат тестирования и использование, то оставлю, пожалуй, всё как есть.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Из ЛС:
Предполагается, что у фотографий всё-таки есть расширения.
Если счётчик нужно начинать именно с двойки, то в конце 18-й строки 0 заменить на 1.
Если стандартный вариант со скобками не устраивает, то меняем " (" & i & ")" на "_" & i в 20 строке.
Как я уже ранее предлагал, забираем 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
Предполагается, что у фотографий всё-таки есть расширения.
Если счётчик нужно начинать именно с двойки, то в конце 18-й строки 0 заменить на 1.
Если стандартный вариант со скобками не устраивает, то меняем " (" & i & ")" на "_" & i в 20 строке.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
Владимир Айвион
- Сообщения: 3
- Зарегистрирован: Чт ноя 05, 2015 13:12