Страница 34 из 44
Добавлено: Вт июл 30, 2019 23:56
Flasher
MVV писал(а):я её специально не исправлял вроде, сама поправилась.
Ну, ты в истории отметь хотя бы.
Да, сейчас вижу — имя у одиночника в режиме без подкаталогов остаётся. Гуд.
Но что-то у нас с какой-то версии тихий режим поломался:
/q /s? /r="%P" "@%WL" "%T*" — выпадает окно ошибки с кракозябрами у первых 4-х символов в пути назначения (в предыдущей версии создаёт папку с кракозябрами спереди в имени, а в ней ссылку с откусанным расширением), без звёздочки — молчит и ничего не создаёт.
Добавлено: Ср июл 31, 2019 10:36
MVV
Спасибо, поправил баг с кракозябрами в случае одного объекта и баг с громким тихим режимом.
NTLinksMaker Beta 428
И твой предыдущий баг понятнее описал в истории.
Добавлено: Ср июл 31, 2019 10:55
Flasher
Теперь при наличии /r="%P" в обычном режиме для любых ссылок зачем-то создаются родительские папки с базовым именем объекта вне зависимости от наличия /q и *.
Добавлено: Ср июл 31, 2019 12:21
MVV
Добавлено: Ср июл 31, 2019 13:00
Flasher
Вместе с постом — в третий раз.

ОК. Баг исчез. Теперь почти всё отлично!
Вот ещё что.
С:\
меняем\тут\каталоги\
*\FileName.ext — работает.
С:\
*\
меняем\тут\каталоги\FileName.ext — пишет:
Сохранение путей относительно базового каталога будет отключено, т.к. имя файла не начинается со звёздочки.
Нельзя исправить?
И ещё бы хотелось в случае /q в "Команда:" и /q- в "Параметры:" автоматически пропускать одноимёнки как без /q-. В 15-ом ты делал это для [..].
Вдобавок было бы, конечно, здорово ключом /c добавлять счётчик к имени в случае, если одноимёнка не является ссылкой на объект.
Кстати, /q
[-] стоит добавить в окошко при вызове без параметров.
Добавлено: Ср июл 31, 2019 22:44
MVV
Вместе с постом — в третий раз.
Да ты прямо считал! И не в третий, я после второго удалил пост и написал новый.
Нельзя исправить?
Я долго думал, есть ли смысл добавлять каталоги после звёздочки, и не нашёл этого смысла. Найдёшь - обсудим. Сейчас \*\ может стоять только перед маской имени файла.
И ещё бы хотелось в случае /q в "Команда:" и /q- в "Параметры:" автоматически пропускать одноимёнки как без /q-.
Что за одноимёнки? Ты про автопереименование файлов, если таковые уже существуют? Или о чём вообще?
В 15-ом ты делал это для [..].
Не понял, что есть 15 (год?) и что есть [..]...
Добавлено: Ср июл 31, 2019 23:11
Flasher
MVV писал(а):Найдёшь - обсудим.
Смысл такой же как и перед \*\. Никакого преимущества у цепочки перед на цепочкой после скрытой под * нет. В равной степени полезно может быть и то и другое.
MVV писал(а):Ты про автопереименование файлов, если таковые уже существуют?
В цитате написано "автоматически пропускать". Про счётчик автопереименования написано уже следом.
MVV писал(а):Не понял, что есть 15 (год?) и что есть [..]...
Год. Только тогда
касалось вызова справки, а сейчас — тихой работы в целом после создания ссылок с диалогом.
Добавлено: Чт авг 01, 2019 09:09
MVV
Смысл такой же как и перед \*\. Никакого преимущества у цепочки перед на цепочкой после скрытой под * нет. В равной степени полезно может быть и то и другое.
Нет, подожди. Вставлять уровни перед непосредственно маской имени - это переносить всю иерархию как есть в другое место, это вполне осмысленно. А вот указание дополнительных уровней - это уже нарушение иерархии. Я не вижу смысла во второй операции:
Код: Выделить всё
Базовая папка:
C:\Files
Исходные файлы:
C:\Files\ File1.txt
C:\Files\ Dir1\ Dir1File.txt
C:\Files\ Dir1\Dir2\ Dir12File.txt
Результат при создании ссылок в C:\FooFiles\*\*.*
C:\FooFiles\ File1.txt
C:\FooFiles\ Dir1\ Dir1File.txt
C:\FooFiles\ Dir1\Dir2\ Dir12File.txt
Результат при создании ссылок в C:\BarFiles\*\Bar\*.*
C:\BarFiles\ Bar\ File1.txt
C:\BarFiles\ Dir1\ Bar\ Dir1File.txt
C:\BarFiles\ Dir1\Dir2\ Bar\ Dir12File.txt
В цитате написано "автоматически пропускать". Про счётчик автопереименования написано уже следом.
То есть, молча пропускать уже существующие объекты? А сейчас не так?
Добавлено: Чт авг 01, 2019 09:25
Flasher
MVV писал(а):Я не вижу смысла во второй операции:
Почему же? Не вижу принципиальной разницы. Если ты создаёшь цепочки справа от относительного пути, то что мешает делать то же самое, но слева? Это по сути одна операция, если работать с полными именами, как в случае md. Иногда ведь нужно создавать подпапки (хотя бы по одной).
MVV писал(а):Код: Выделить всё
Результат при создании ссылок в C:\BarFiles\*\Bar\*.*
C:\BarFiles\ Bar\ File1.txt
C:\BarFiles\ Dir1\ Bar\ Dir1File.txt
C:\BarFiles\ Dir1\Dir2\ Bar\ Dir12File.txt
Ну, да. Только чаще это будет без BarFiles\.
И потом, предупреждение появляется и в случае обычного режима с подкаталогами. А там относительных путей не будет, и закономерность добавки для тихого комбо-режима становится более очевидна.
MVV писал(а):То есть, молча пропускать уже существующие объекты?
Не просто существующие, а одноимённые. С добавкой /с[1|2] — сперва проверять, что одноимёнка не является ссылкой, или что ссылка (хард/сим — любая) не соответствует источнику, и тогда создавать ссылку с добавкой счётчика в скобках. 1|2 — выбор начала счётчика.
MVV писал(а):А сейчас не так?
С диалогом — нет.
Добавлено: Чт авг 01, 2019 10:48
MVV
Не просто существующие, а одноимённые.
Это уже очевидно, остальные нас в принципе не интересуют.
С добавкой /с[1|2] — сперва проверять, что одноимёнка не является ссылкой, или что ссылка (хард/сим — любая) не соответствует источнику, и тогда создавать ссылку с добавкой счётчика в скобках. 1|2 — выбор начала счётчика.
Слишком сложно и экзотично. Жёсткие ссылки в принципе не детектируются, можно разве что по индексу сравнить, на тот же объект она ссылается или нет, и далее пропускать или удалять+пересоздавать, читать символьные или точки соединения слишком сложно, проще сразу либо пропускать, либо удалять и создавать заново (чтобы гарантированно соответствовали источнику). Но если существующий объект - непустая папка, её просто так не удалишь. Мне не очень хочется заниматься проверкой ссылок, это уже слишком серьёзно и ситуативно, чтобы автоматизировать. А добавить автопереименование со счётчиком по стандартной схеме можно.
С диалогом — нет.
Вижу баг: если жму Пропустить эн раз, то создаются все возможные ссылки и пропускаются конфликты по именам. А если Пропустить всё, то ничего не создаётся, хотя эффект должен быть таким же. Ты об этом или о чём-то ещё?
Добавлено: Чт авг 01, 2019 10:59
Flasher
MVV писал(а):и экзотично.
Создавать линки без создания дубликатов — вполне прозрачная задача, никакой экзотики.
MVV писал(а):можно разве что по индексу сравнить
Я об этом сразу и подумал. Это просто.
MVV писал(а):читать символьные или точки соединения слишком сложно
.ExtendedProperty("LinkTarget") — разве не простой вариант? Или подвязаться к NTLinks.wdx
64 (как TCFS2 подвязывается к TCFS2Tools.dll)?
MVV писал(а):либо удалять и создавать заново
Нет, это не годится. Там может иная папка фигурировать.
MVV писал(а):Ты об этом или о чём-то ещё?
Я вообще о показе окна ошибки как такового. С /q оно не выводится.
Добавлено: Чт авг 01, 2019 12:37
MVV
.ExtendedProperty("LinkTarget") — разве не простой вариант? Или подвязаться к NTLinks.wdx64 (как TCFS2 подвязывается к TCFS2Tools.dll)?
И то и другое - слишком сложно, чтобы я мог это представить в этой утилите. Первое привязывает к COM-интерфейсам и непонятно что вернёт, путь может быть записан по-разному, второе требует привязки к плагину и поддержки его интерфейса.
Нет, это не годится. Там может иная папка фигурировать.
А что ты хочешь в результате? Вариант 1: пропустить все дубликаты, вариант 2: перезаписать все дубликаты, вариант 3: автопереименовать все дубликаты, ещё есть разумные варианты? Или ты в варианте 3 хочешь проверять и не автопереименовывать совпадающие?
Я вообще о показе окна ошибки как такового. С /q оно не выводится.
На то он и интерактивный режим, чтобы хотя бы раз сообщить об ошибке. Но добавить опцию для переопределения поведения в случае ошибки можно, она пригодится и для тихого режима (прерывать при ошибке или пропускать всё).
Добавлено: Чт авг 01, 2019 17:34
Flasher
MVV писал(а):и непонятно что вернёт
Полное имя источника.
MVV писал(а):путь может быть записан по-разному
Ты про относительный? Вернёт в любом случае полный.
MVV писал(а):вариант 2: перезаписать все дубликаты
Если не проверять на тип/источник, то замена по сути вредна.
MVV писал(а):автопереименовать все дубликаты
Автопереименовывать можно только имеющиеся одноимёнки. Это не требуется. Требуется именовать новые ссылки с добавкой счётчика.
MVV писал(а):Или ты в варианте 3 хочешь проверять и не автопереименовывать совпадающие?
Совпадающие по указанным мной признакам — пропускать, конечно, но никак не заменять и не сигналить ошибкой.
MVV писал(а):На то он и интерактивный режим, чтобы хотя бы раз сообщить об ошибке.
Так я не со стандартного варианта начал, а с комбинации /q и /q-.
MVV писал(а):Но добавить опцию для переопределения поведения в случае ошибки можно
Нужно!
Добавлено: Пт авг 02, 2019 13:43
MVV
Ты про относительный? Вернёт в любом случае полный.
А промежуточные ссылки пораскрывает?
Если не проверять на тип/источник, то замена по сути вредна.
Если проверять только тип и перезаписывать только ссылку ссылкой, то замена не так уж и вредна, сделает то же самое, что и удаление дубликатов в папке назначения плюс обычный запуск.
Автопереименовывать можно только имеющиеся одноимёнки. Это не требуется. Требуется именовать новые ссылки с добавкой счётчика.
Не пойму тебя. Именовать новые с добавкой счётчика - разве не в этом суть автопереименования в случае, когда объект по пути создаваемой ссылки уже сущестуует?
Добавлено: Пт авг 02, 2019 14:28
Flasher
А промежуточные ссылки пораскрывает?
Не в курсе, о чём ты. У Sym/RP такие есть?
сделает то же самое, что и удаление дубликатов в папке назначения плюс обычный запуск.
Что за запуск? Удаление одноимёнок без проверки вредно. Я же выше объяснял. Ссылка может вести на другой источник. Это не будет равноценной заменой.
Именовать новые с добавкой счётчика - разве не в этом суть автопереименования в случае, когда объект по пути создаваемой ссылки уже сущестуует?
Какой объект? Одноимённый? Разберись в терминах. Я всё чётко расписал. Точнее вряд ли уже получится. Автопереименовывать существующие объекты не имеет смысла (хотя в ряде ренеймеров такая опция имеется). Новые объекты нельзя в принципе переименовывать, так как они ещё не появились на свет, им можно только присвоить имена (именовать) с добавкой счётчика или без. Ты же не будешь сперва создавать их с рандомным именем, а потом переименовывать под совпадения со счётчиком.