Страница 3 из 4
Добавлено: Пт окт 04, 2019 08:18
Strek
Flasher писал(а):Т.е конфликтные имена таки есть?
Чего-то я не понял тебя. Ну да, есть, но они опять же есть только в папке с проблемным именем. Соответственно меняться должны файлы в ней (вместе с теми, что в подпапке) и перенос в безпроблемную с заменой.
ПС. В папке с проблемным именем нет подпапок с проблемными именами.
Добавлено: Пт окт 04, 2019 13:20
sa
Strek писал(а):такой способ по маске конфликты может видеть, но не оставляет оригинальные имена.
Оставляет, при выборе опции "Заменить все".
Добавлено: Пт окт 04, 2019 13:40
Flasher
Strek писал(а):Ну да, есть, но они опять же есть только в папке с проблемным именем.
Здрасте. Я же цитату привёл:
Strek писал(а):Но есть и такое, что папка без проблемного имени, но в ней содержаться файлы, например:
В контексте задачи всё, что содержит скобки и совпадает в доскобочной части с аналогом, является "проблемным".
Strek писал(а):В папке с проблемным именем нет подпапок с проблемными именами.
А там вообще есть подпапки на разной глубине?
Добавлено: Пт окт 04, 2019 14:25
Strek
Flasher писал(а):Здрасте. Я же цитату привёл:
Теперь понял

Нет. Есть что-то одно, либо проблемная папка и в ней проблемные файлы (могут быть), либо без проблемная папка и в ней проблемные файлы.
Такого, чтобы и то, и другое - нет.
Flasher писал(а):А там вообще есть подпапки на разной глубине?
Вообще папки есть, но глубина не известна, так как там, как я уже упоминал - 45Гб портативного софта. Поэтому глубина может быть разной. к пример есть Brackets, а ней папка для локалхоста и естественно в ней глубина большая.
Добавлено: Пт окт 04, 2019 17:03
Flasher
Strek писал(а):либо проблемная папка и в ней проблемные файлы (могут быть), либо без проблемная папка и в ней проблемные файлы.
Так и что с ними делать-то?
1. Переименовывать с заменой внутри родителя или сразу переносить как есть с заменой в получателе?
2. И что делать со скобками в непроблемной папке при наличии/отсутствии аналога? Оставлять как есть или тоже переименовывать?
Добавлено: Пт окт 04, 2019 20:55
Strek
Flasher писал(а):Так и что с ними делать-то?
Блин, я ж не зря написал откуда они все взялись

Изначально была папка (с/без подпапками и файлами), она скопировалась после первой синхронизации в облако.
Потом я обновлял программы, файлы и т.д. и после второй синхронизации, соответствующая программа по какой-то причине не начала заменять старые версии новой, а в зависимости от ситуации возвращать на диск старые версии, а новым добавлять конфликтные имена.
Это я к тому, что такой ситуации:
Flasher писал(а): И что делать со скобками в непроблемной папке при наличии/отсутствии аналога? Оставлять как есть или тоже переименовывать?
не может быть.
Всегда нужно переименовывать проблемные имена и всегда заменять, если есть старая версия (то бишь без проблемного имени).
Исходя из всего этого:
Flasher писал(а): Переименовывать с заменой внутри родителя или сразу переносить как есть с заменой в получателе?
будет правильным вариант - переименовывать внутри и перемещать с заменой
Добавлено: Сб окт 05, 2019 16:09
Flasher
Strek
Т.е алгоритм такой?
1. Поиск всех файлов со скобками во всей структуре каталогов и удаление скобочной части с заменой при совпадении.
2. Поиск всех папок со скобками только на верхнем уровне и перемещение содержимого в папки без скобок при наличии с заменой одноимённых файлов.
3. Удаление опустевших папок.
Добавлено: Сб окт 05, 2019 17:17
Strek
Flasher писал(а):Т.е алгоритм такой?
Можно заменить знак препинания.

Т.е. Алгоритм такой.
ПС. В общем, в "яблочко".

Добавлено: Пн окт 07, 2019 01:24
Flasher
Strek
[cut="Забирай:"]
Код: Выделить всё
'================================= VBS ================================
' Алгоритм действий скрипта:
' 1) Удаление <пробел>(*) справа базовых имён файлов структуры рабочего
' каталога с автозаменой при совпадении имён с существующими файлами
' 2) Удаление в структуре рабочего каталога <пробел>(*) справа
' имён каталогов при отсутствии таковых без удаляемой части
' 3) Перемещение с автозаменой содержимого из каталогов текущего
' уровня с наличием в именах <пробел>(*) в каталоги без оного
' 4) Удаление опустошённых каталогов
' Условие: путь запуска — пустой
'======================================================================
Option Explicit : Dim FSO, ShA, Dir, Items, Itms, Fd
Set ShA = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dir = ShA.NameSpace(FSO.GetAbsolutePathName(""))
If StrComp(Dir.Self.Path,_
FSO.GetParentFolderName(WSH.ScriptFullName),1) = 0 Then WSH.Quit
FFolder Dir : Set Items = Dir.Items: Items.Filter 73888, "* (*)"
For Each Fd In Items
Set Itms = Fd.GetFolder.Items
ShA.NameSpace(Left(Fd.Path, InStrRev(Fd.Path, " (") - 1)).MoveHere Itms, 5652
If Fd.GetFolder.Items.Count = 0 Then FSO.DeleteFolder Fd.Path, 1
Next
For Each Fd in Array(Itms, Items, Dir, ShA, FSO)
Set Fd = Nothing
Next
MsgBox Space(29) & "Выполнено!", 4160,_
"Масштабное обрезание имён объектов с автозаменой "
Sub FFolder(Fold)
Path = Fold.Self.Path
Set Items = Fold.Items
Items.Filter 73920, "* (*)*"
Dim F, FPath, Ext, NName, Path, Name, FdPath
For Each F in Items
FPath = F.Path
Ext = FSO.GetExtensionName(FPath)
If Ext <> "" Then Ext = "." & Ext
NName = Split(FSO.GetBaseName(FPath), " (")(0) & Ext
If FSO.FileExists(Path & "\" & NName) _
Then FSO.DeleteFile Path & "\" & NName, 1
F.Name = NName
Next : Items.Filter 73888, "*"
For Each Fd In Items
Name = Fd.Name : FdPath = Fd.Path : FFolder Fd.GetFolder
If InStr(Name, "(") Then
NName = Split(FSO.GetFileName(FdPath), " (")(0)
If Not FSO.FolderExists(Path & "\" & NName) Then Fd.Name = NName
End If
Next
End Sub
[/cut]
Добавлено: Сб окт 12, 2019 20:43
Strek
Flasher писал(а):Забирай:
Спаситель! Большое БлагоДарю!

Добавлено: Сб окт 12, 2019 20:48
Flasher
Strek
Во, а что так долго?

Всё работает как надо?
Добавлено: Сб окт 12, 2019 21:03
Strek
Flasher писал(а):Во, а что так долго? Surprised Всё работает как надо?
Да я не знаю. Уведомление пришло, перехожу в браузере, а "Сайт не найден". И так дня два-три. Думал может домен не проплатили или хостинг.
Добавлено: Сб окт 12, 2019 21:30
Flasher
Strek
Уже 3-й день как доступен. Важнее было бы на второй вопрос ответить.
Добавлено: Сб окт 12, 2019 22:32
Strek
Flasher писал(а):Важнее было бы на второй вопрос ответить.
Подумал про него, когда читал, да за своими делами не ответил
ПС. Ну вроде всё чётко, а по работе (по запуску программ) дальше проверим
Добавлено спустя 37 секунд:
Flasher писал(а):Уже 3-й день как доступен.
А я уж начал думать, что может у нас (в Украине) уже и сюда добрались

Добавлено: Сб окт 12, 2019 23:23
Flasher
Strek
Гуд. Тогда пож-та. А сайт всегда есть возможность проверить (
1,
2,
3 и т. д.).
