View previous topic :: View next topic |
Author |
Message |
sa
Joined: 29 Apr 2009 Posts: 2704
|
(Separately) Posted: Tue May 05, 2015 14:07 Post subject: |
|
|
a-dasler wrote: | Порядок устраивает, какой он сейчас, только имена файлов не устраивают. |
Правильно, что относительный порядок (итоговую возрастающую нумерацию переименованных файлов 10001,10002, 10003...) следует сохранять или он не важен? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue May 05, 2015 14:09 Post subject: |
|
|
А как ты сохранишь конечную нумерацию для 10001 при наличии 1 в папке?
Перечитай ещё раз исходный запрос. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2704
|
(Separately) Posted: Tue May 05, 2015 14:19 Post subject: |
|
|
Flasher
Вопрос в том, следует ли переименовать 10001 в 2, 10002 в 3, 10003 в 4 или можно и беспорядочно, например 10001 в 4, 10002 в 3, 10003 в 2. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue May 05, 2015 14:30 Post subject: |
|
|
sa
Я же не зря написал про исходный пост. Там про порядок сортировки написано отнюдь не двусмысленно. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2704
|
(Separately) Posted: Tue May 05, 2015 15:22 Post subject: |
|
|
Flasher
Если порядок следует сохранять, то почему на FAT32 после вызова скрипта порядок не всегда сохраняется? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue May 05, 2015 15:52 Post subject: |
|
|
sa
Не получается воспроизвести на флешке с FAT32 на файлах 10001.1, 10002.2, 10003.3, 10004.4.
Или сама Windows на FAT32 стоит? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2704
|
(Separately) Posted: Tue May 05, 2015 16:10 Post subject: |
|
|
Flasher
Сначала в папке создай (скопируй) файл 10004.4, затем 10003.3 и т.д. После скрипта у меня получаются файлы 1.4, 2.3, 3.2, 4.1. |
|
Back to top |
|
 |
a-dasler
Joined: 04 May 2015 Posts: 11
|
(Separately) Posted: Tue May 05, 2015 16:42 Post subject: |
|
|
Прошу прощения за отсутствие..
Да, порядок сортировки важен. Т.е. как есть.
Пронумерованные документы сканировались по порядку, сканер выдавал такой порядок:
1.*, а после следующие документы 10001.*, 10002.* и так далее по порядку.
Доступа к сканеру и к сканирующему компьютеру не имею, поэтому там исправлять не могу.
Подправленный скрипт не тестировал, поэтому несоответствия не обнаружил. Меня устроил первый вариант скрипта. Ведь в папках и подпапках нигде не было файла 2.*. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue May 05, 2015 17:31 Post subject: |
|
|
sa
Ясно. Я читал раньше про пересортицу на FAT-ах, в сети хватает информации и на руборде об этом речи велись.
В общем, если очень надо, то вот
 вариант с сортировкой в т. ч. для проблемных ФС: Code: | '====================================================================
' Именовать файлы нумерацией в структуре активного каталога
' Условие: путь запуска - пустой
' Параметры (необязательные):
' 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 wrote: | Меня устроил первый вариант скрипта. Ведь в папках и подпапках нигде не было файла 2.*. | ОК. Я это уже понял. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Thu May 07, 2015 16:26; edited 4 times in total |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2704
|
(Separately) Posted: Tue May 05, 2015 17:47 Post subject: |
|
|
Flasher
Можно надеяться, что он и для непроблемных подходит? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue May 05, 2015 17:48 Post subject: |
|
|
sa
Можно не только надеяться, но и проверить.
Add: часть кода вынес из процедуры. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2704
|
(Separately) Posted: Tue May 05, 2015 18:12 Post subject: |
|
|
Flasher
Запуск без параметров. Из тестового набора с именами 1, 2, 10001 после скрипта получились имена 3, 4, 5. Это верно? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue May 05, 2015 18:17 Post subject: |
|
|
sa
Да, при условии, что все расширения в папке одинаковые. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2704
|
(Separately) Posted: Wed May 06, 2015 00:08 Post subject: |
|
|
Тогда остаётся надеяться, что я окажусь единственным, задавшим подобный вопрос и предположившим, что нумерация начнётся с 1 для случая, когда все файлы переименовываются (второй параметр скрипта отсутствует или равен 0). |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed May 06, 2015 00:20 Post subject: |
|
|
sa
Будем надеяться. Можно, конечно, ещё подписать "Граждане, не задавайте глупых вопросов! Влючайте логику!".  _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
|