Правильно, что относительный порядок (итоговую возрастающую нумерацию переименованных файлов 10001,10002, 10003...) следует сохранять или он не важен?a-dasler писал(а):Порядок устраивает, какой он сейчас, только имена файлов не устраивают.
Групповое переименование
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
А как ты сохранишь конечную нумерацию для 10001 при наличии 1 в папке?
Перечитай ещё раз исходный запрос.
Перечитай ещё раз исходный запрос.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Я же не зря написал про исходный пост. Там про порядок сортировки написано отнюдь не двусмысленно.
Я же не зря написал про исходный пост. Там про порядок сортировки написано отнюдь не двусмысленно.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Не получается воспроизвести на флешке с FAT32 на файлах 10001.1, 10002.2, 10003.3, 10004.4.
Или сама Windows на FAT32 стоит?
Не получается воспроизвести на флешке с FAT32 на файлах 10001.1, 10002.2, 10003.3, 10004.4.
Или сама Windows на FAT32 стоит?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Прошу прощения за отсутствие..
Да, порядок сортировки важен. Т.е. как есть.
Пронумерованные документы сканировались по порядку, сканер выдавал такой порядок:
1.*, а после следующие документы 10001.*, 10002.* и так далее по порядку.
Доступа к сканеру и к сканирующему компьютеру не имею, поэтому там исправлять не могу.
Подправленный скрипт не тестировал, поэтому несоответствия не обнаружил. Меня устроил первый вариант скрипта. Ведь в папках и подпапках нигде не было файла 2.*.
Да, порядок сортировки важен. Т.е. как есть.
Пронумерованные документы сканировались по порядку, сканер выдавал такой порядок:
1.*, а после следующие документы 10001.*, 10002.* и так далее по порядку.
Доступа к сканеру и к сканирующему компьютеру не имею, поэтому там исправлять не могу.
Подправленный скрипт не тестировал, поэтому несоответствия не обнаружил. Меня устроил первый вариант скрипта. Ведь в папках и подпапках нигде не было файла 2.*.
sa
Ясно. Я читал раньше про пересортицу на FAT-ах, в сети хватает информации и на руборде об этом речи велись.
В общем, если очень надо, то вот
[cut="вариант с сортировкой в т. ч. для проблемных ФС:"][/cut]
Ясно. Я читал раньше про пересортицу на FAT-ах, в сети хватает информации и на руборде об этом речи велись.
В общем, если очень надо, то вот
[cut="вариант с сортировкой в т. ч. для проблемных ФС:"]
Код: Выделить всё
'====================================================================
' Именовать файлы нумерацией в структуре активного каталога
' Условие: путь запуска - пустой
' Параметры (необязательные):
' 1) <фильтр-список расширений> (по умолчанию - все)
' 2) <наименьшее число в базовом имени файлов, подлежащих именованию>
' (по умолчанию - 0)
' Примеры: *.jpg;*.jpeg | "" 1000
'====================================================================
With WScript.Arguments
C = .Count : Min = 0 : If C = 2 Then Min = .Item(1)
If C 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
Items.Filter 64, Filt : 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
i = i + 1 : N = i & Ext : BN = FSO.GetBaseName(F)
If IsNumeric(BN) Then
If CLng(BN) >= CLng(Min) Then
While FSO.FileExists(Path & "" & N) Or FSO.FolderExists(Path & "" & N)
i = i + 1 : N = i & Ext
Wend : F.Name = N
End If
ElseIf Not FSO.FileExists(Path & "" & N) Then F.Name = N
End If
Next : Dict.RemoveAll : Items.Filter 160, "*"
For Each Fold in Items : ForFolder Fold.Path : Next
End SubОК. Я это уже понял.a-dasler писал(а):Меня устроил первый вариант скрипта. Ведь в папках и подпапках нигде не было файла 2.*.
Последний раз редактировалось Flasher Чт май 07, 2015 15:26, всего редактировалось 4 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Будем надеяться. Можно, конечно, ещё подписать "Граждане, не задавайте глупых вопросов! Влючайте логику!".
Будем надеяться. Можно, конечно, ещё подписать "Граждане, не задавайте глупых вопросов! Влючайте логику!".
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.