Ru-Board.club
← Вернуться в раздел «Программы»

» WinRAR (часть 2)

Автор: regist123
Дата сообщения: 20.08.2015 16:38
EugeneRoshal 16:17 20-08-2015
Цитата:
Я показ папки убрал, можете проверить на свежей сборке beta 2.

Проверил. Папку больше не показывает. Тест архива проходит без проблем, но при попытке распаковки выдаёт ошибку. Это так и задумано?
WinRar 5.20 распаковывает этот файл нормально.
Автор: EugeneRoshal
Дата сообщения: 20.08.2015 16:41
regist123

Цитата:
при попытке распаковки выдаёт ошибку. Это так и задумано?

Так и задумано. Имя нулевой длины, значит распаковывайте через repair.
Автор: Benchmark
Дата сообщения: 20.08.2015 16:44
EugeneRoshal

Цитата:
Я показ папки убрал, можете проверить на свежей сборке beta 2. А с тем, что Explorer показывает такие файлы как .txt, я ничего сделать не могу (это к "показывает в проводнике исполняемый файл как текстовый документ")

Как вариант: если имена одного и того же файла в обеих копиях не совпадают, при распаковке принудительно давать файлу расширение .bad

И что с этим делать дальше, пусть решает сам пользователь. По крайней мере запуститься на автомате оно уже точно не сможет.
Автор: Victor_VG
Дата сообщения: 20.08.2015 16:50
Benchmark

Поддерживаю. Идея разумная.
Автор: EugeneRoshal
Дата сообщения: 20.08.2015 16:53
Benchmark

Цитата:
Как вариант: если имена одного и того же файла в обеих копиях не совпадают, при распаковке принудительно давать файлу расширение .bad

Проблема в том, что есть масса ZIP архивов, у которых в одной копии OEM кодировка, а в другой - ANSI. Некоторые популярные утилиты этим грешили в свое время. На все такие архивы ругаться - себе дороже, люди возьмут другую утилиту, которая их молча и правильно распакует.

Цитата:
И что с этим делать дальше, пусть решает сам пользователь. По крайней мере запуститься на автомате оно уже точно не сможет.

Оно и сейчас запуститься на автомате не может. И обмануть пользователя не тем расширением в окне WinRAR не может. Все что оно могло это открыть окно Explorer с распакованным файлом при его просмотре, но и этого теперь не может.
Автор: regist123
Дата сообщения: 20.08.2015 16:54
EugeneRoshal 16:41 20-08-2015
Цитата:
Так и задумано. Имя нулевой длины, значит распаковывайте через repair.

Просто противоречие небольшое получается. Тест архива говорит, всё нормально, а распаковка ошибка и нужно через Repair. Может тогда и при тесте архива как-то на это указывать?
Автор: Benchmark
Дата сообщения: 20.08.2015 17:02
EugeneRoshal

Цитата:
Проблема в том, что есть масса ZIP архивов, у которых в одной копии OEM кодировка, а в другой - ANSI. Некоторые популярные утилиты этим грешили в свое время.

Есть такой момент. Если склероз не изменяет, даже pkzip 2.50 такое делал. И чтобы проверить - одно и то же там имя или нет, надо конвертировать из ANSI в OEM (или наоборот), для этого надо знать номер кодовой страницы (или пытаться его "угадать"). И если представить, что в архиве у нас несколько десятков тысяч файлов... в общем да, не вариант.


Цитата:
Все что оно могло это открыть окно Explorer с распакованным файлом при его просмотре, но и этого теперь не может.

Пусть так и будет. Только чтобы при тестировании это тоже как-то в логе показывалось, тут regist123 прав.
.
Автор: EugeneRoshal
Дата сообщения: 20.08.2015 17:12
regist123

Цитата:
Тест архива говорит, всё нормально, а распаковка ошибка и нужно через Repair.

Тест сейчас проверяет целостность данных, но не соответствие имен файлов файловой системе. Тут ведь в чем ошибка при распаковке - не удается создать файл с пустым именем. Но пустое имя это ведь частный случай. Есть сколько угодно имен, которые нельзя создать в текущей ОС или файловой системе. Или вообще нигде нельзя создать, как, например, ///
Автор: Cryzer
Дата сообщения: 25.08.2015 14:13
Ребят, не подскажите, есть ли возможность добавлять файлы в архив занулёнными, т.е. оригинальные файлы имеют определённый размер, а в архиве - 0 байт?
Автор: regist123
Дата сообщения: 25.08.2015 14:34
Cryzer
создай батник, которые будет создавать пустые файлы с именами нужных тебе файлов, а потом помещать их в архив .
Автор: Cryzer
Дата сообщения: 25.08.2015 14:55
regist123
Мысль хорошая, спасибо. Осталось только разобраться, как в батнике реализовать копирование с занулением...
Автор: boi1eI
Дата сообщения: 25.08.2015 15:41
Cryzer (14:55 25-08-2015)
Цитата:
копирование с занулением

.>%file% 2>nul
Автор: Skif_off
Дата сообщения: 25.08.2015 15:42
Cryzer
Взгляните тему, может быть, что-нибудь подходящее найдётся.
Автор: Cryzer
Дата сообщения: 25.08.2015 16:59
Skif_off
Благодарю! Вариант с Total Commander'ом мне подошёл!
Автор: Victor_VG
Дата сообщения: 26.08.2015 03:24
Cryzer

Можно и проще contig -v -n имя_файла 0 в цикле батника. И извращения с ТС как и прочие пляски с бубном не потребуются.
Автор: Skif_off
Дата сообщения: 26.08.2015 10:59
Victor_VG
Дык дело не в ТС как таковом, а в предложенных в темах решениях - VBScript и cmd
Автор: Cryzer
Дата сообщения: 26.08.2015 11:24
Victor_VG
Skif_off
Я нашёл ещё лучше решение. Раз небольшой оффтоп пошёл, то напишу:

Код: robocopy.exe "source" "dest" /mir /create /dcopy:T
Автор: Victor_VG
Дата сообщения: 26.08.2015 12:43
Skif_off
Cryzer

Главное что задача решена, а чем и как не столь и важно. Согласны?
Автор: pikorembo
Дата сообщения: 01.09.2015 00:41
EugeneRoshal
Накопилось несколько багрепортов. Не было времени опубликовать. Итак:

1. Выбираем "Найти файлы" в меню WinRAR и запускаем поиск. Разворачиваем окно "Результаты поиска" на весь экран. Сворачиваем окно WinRAR через панель задач. Восстанавливаем окно WinRAR из панели задач. Окно "Результаты поиска" стало обычного размера. Хотя до этого оно было максимизированным.

2. Открываем диалог создания/распаковки архива. Выбираем защищённую UAC папку. Настраиваем остальные параметры и нажимаем OK. Отклоняем запрос системы на повышение привилегий. Диалог создания/распаковки архива закрывается. Зачем? Можно дать пользователю возможность выбрать другую папку.

3. При копировании текста из Интернета в файле UUE может оказаться пробел в конце каждой строки. Если распаковать такой UUE файл через WinRAR, то появится "неуправляемый" файл с пробелом в конце имени, который отказываются открывать приложения. Такой файл невозможно удалить Проводником.
Автор: Victor_VG
Дата сообщения: 01.09.2015 01:20
pikorembo

В таком случае перед распаковкой удалите в текстовом редакторе концевые пробелы и переводы строк после них - это ошибка не RAR, а того человека который сдуру записывал UUE файл через текстовый редактор. Переименовать/удалить такой файл да Explorer.exe не может - это внутренняя ошибка его кода, но с ним свободно справятся Far Manager v3.0 или Midnight Commander для которого есть Win32 сборка mcwin32-build189-setup.exe основанная на исходниках текущей стабильной версии 4.8.14.
Автор: KT315E
Дата сообщения: 01.09.2015 09:24
EugeneRoshal
Может стоит добавить в выпадающий список Файлы для обработки на вкладке Время варианты с датой создания файлов, а не только изменения? Пример. Архивирование папки с выбором файлов новее семи дней. При копировании в папку древнего файла, изменится дата папки, и она в архив попадёт, а вот этот "новый" файл с датой создания сегодня, но изменённый давно, в архив не попадёт.

И ещё предложение. Чтобы настройка шрифта Списка файлов влияла на шрифт дерева папок.
Автор: pikorembo
Дата сообщения: 01.09.2015 12:37
Victor_VG
В данном случае это ошибка WinRAR. Формат UUE предназначен для передачи в текстовом виде и предполагает наличие концевых пробелов. Все известные мне декодировщики UUE учитывают эту специфику формата и отрезают пробелы самостоятельно. Читайте документацию и не морочьте людям голову советами проделать вручную то, что должна была сделать программа.
Автор: Victor_VG
Дата сообщения: 01.09.2015 17:53
pikorembo

Прочтите описание алгоритма UUE-кодирования - в нём не используются пробелы (заменяются на 0x96) и символы 0x0A0D в качестве признака "перевод строки" - для этого в конце строки ставится 0x0A ибо алгоритмы BASE64/UUE/XXE разработаны для UNIX систем, а на то что господа получающие жалованье в рекламных фирмах пишут про "допустимость вставки" CrLf (0x0A0D) и концевых пробелов в строках и именах файлов (0х20) с их "последующим обрезанием декодером" не обращайте внимания - им же надо хоть что-то писать чтобы с работы не выгнали.

Единственный вариант когда UNIX BASE64/UUE/XXE-кодер включит символ пробела в имя файла это один - он изначально был частью имени файла/каталога на файловой системе что допустимо для UNIX файловых систем, а ранее такие имена считались допустимыми и для IBM OS/360 где они собственно и появились, как и имена файлов и каталогов с точкой в начале или конце имени, и то что они не допустимы для DOS/Windows это только технические особенности реализации данных ОС, но не более того, и не повод для для хамства с вашей стороны.
Автор: EugeneRoshal
Дата сообщения: 01.09.2015 20:49
pikorembo

Цитата:
Окно "Результаты поиска" стало обычного размера. Хотя до этого оно было максимизированным.

Это я пока не знаю, от чего зависит. WinRAR тут какие-то специфические манипуляции с окнами не выполняет.

Цитата:
Настраиваем остальные параметры и нажимаем OK. Отклоняем запрос системы на повышение привилегий. Диалог создания/распаковки архива закрывается. Зачем?

Диалог закрывается еще после нажатия OK и до UAC запроса.

Цитата:
Можно дать пользователю возможность выбрать другую папку.

Пришлось бы основательно менять логику выполнения команды и выносить работу с UAC из распаковки в этот диалог.

Цитата:
При копировании текста из Интернета в файле UUE может оказаться пробел в конце каждой строки. Если распаковать такой UUE файл через WinRAR, то появится "неуправляемый" файл с пробелом в конце имени, который отказываются открывать приложения. Такой файл невозможно удалить Проводником.

Тут я, пожалуй, соглашусь, что пробелы в конце имени файла в uue надо убирать. В большинстве случаев они там будут по причине какого-то сбоя, а не потому что так было задумано создателем архива. Я сейчас выложил новую сборку английской beta 3, там они должны убираться.

Добавлено:
KT315E
В будущих версиях - не исключаю.
Автор: pikorembo
Дата сообщения: 01.09.2015 21:51
Victor_VG
Соглашусь с вами, что на UNIX системах имена файлов с концевыми пробелами допустимы. Но мы говорим про WinRAR, который работает в среде Windows. Например, при декодировании из UUE файла, содержащего двойные кавычки в имени, WinRAR заменяет недопустимые символы знаком подчёркивания. Также WinRAR не позволяет переименовать файл внутри архива с добавлением, к примеру, символа двоеточия, потому что это запрещено в Windows. Но почему WinRAR не делает исключений для концевых пробелов? Это относится не только к обработке UUE, но также к другим форматам архивов.

EugeneRoshal

Цитата:
Тут я, пожалуй, соглашусь, что пробелы в конце имени файла в uue надо убирать.

Может быть, рассмотреть этот вопрос шире, не только применительно к формату UUE?
Автор: Benchmark
Дата сообщения: 01.09.2015 22:12
pikorembo

Цитата:
Но мы говорим про WinRAR, который работает в среде Windows

С помощью wine он может работать и под *nix.

И тогда становится непонятно, как WinRAR должен обрабатывать RAR-файлы, созданные под Linux, где такие имена вполне допустимы.

EugeneRoshal

Цитата:
Тут я, пожалуй, соглашусь, что пробелы в конце имени файла в uue надо убирать

В UUE - может быть.

Но в остальных форматах "автоматом" не надо. Лучше в этом случае задавать вопрос пользователю, а то может так и было задумано.

Автор: Pasha_ZZZ
Дата сообщения: 01.09.2015 22:16
pikorembo
Цитата:
что на UNIX системах имена файлов с концевыми пробелами допустимы
а кто сказал, что в венде эти имена недопустимы? создайте батник [more=вот с таким содержимым]md "test folder"
md " test folder"
md "test folder \"
md " test folder \"[/more] сколько папок он создаст?
Автор: Victor_VG
Дата сообщения: 01.09.2015 22:18
pikorembo

С этим соглашусь - если мы встречаемся с техническим ограничением ОС то программы обязаны его соблюдать, равно как и её спецификации, правда увы но часто сама Микрософт этого не делает. Буквально на днях с этим столкнулся в очередной раз - приятель принёс флешку с работы, там важный для него документ созданный в Word 2013 а ... дома ни Word, ни шелл его не читают "Неправильное имя или путь к файлу или он не существует". Он ко мне, глянул - а там забава в квадрате с хвостиком - Ворд как истинный балбес взял в качестве имени файла заголовок документа, а приятель набивая его случайно в конце фразы таб а следом и пробел нажал. Говорит по телефону позвонили, но ворд честно это имя файлу и влепил, итог понятен. Кстати, в том же Far для борьбы с сим "злом" есть пара плагинов, вернее один но в двух вариантах - бинарник (DLL) и его Lua версии - FIN (Fix Incorrect Names), LF_FIN (LuaFAR FIN) и его развитие FIN alt (Lua) так что народ вынужденно с ошибками Микрософт борется и надо сказать успешно ибо есть грубый баг в ОС который специально не исправляют, но жить-то надо.

Benchmark
Pasha_ZZZ

С обоими соглашусь

EugeneRoshal а что до уборки концевых - лидирующих пробелов то может стоит просто вопрос задавать и предупреждать о возможных альтернативах:

1) искажение имени файла/каталога;
2) невозможность открыть файл/каталог в некоторых программах;
2) возможном сбое в работе программ использующих лидирующие/концевые пробелы в именах файлов при их удалении


и только получив подтверждение оператора убирать их, а нет генерировать для таких файлов хардлинки с "правильными" именами? Расход дискового пространства одна запись файла (0,5 - 8 КБ на файл/каталог), зато головной боли значительно меньше. Я думаю, что самый разумный вариант это генерация хардлинков как основной способ устранения подобных конфликтов, а переименование файлов это крайняя мера.
Автор: pikorembo
Дата сообщения: 01.09.2015 22:41
Benchmark

Цитата:
И тогда становится непонятно, как WinRAR должен обрабатывать RAR-файлы, созданные под Linux, где такие имена вполне допустимы.

Точно так же, как и с другими символами недопустимыми в Windows, но допустимыми в Linux, удаляя или подставляя вместо них другие. Поскольку Wine является альтернативной реализацией Windows API, то следует ожидать поведения схожего с Windows-системами.

Pasha_ZZZ

Цитата:
создайте батник вот с таким содержимым сколько папок он создаст?

Создать-то создаст, а дальше что? О несоответствии спецификациям хорошо написал Victor_VG.

Цитата:
а кто сказал, что в венде эти имена недопустимы?

https://support.microsoft.com/en-us/kb/320081

Цитата:
You may not be able to delete a file if the file name includes an invalid name (for example, the file name has a trailing space or a trailing period or the file name is made up of a space only).

Цитата:
Therefore, if you have two files in the same folder named "AFile.txt" and "AFile.txt " (note the space after the file name), if you try to open the second file by using standard Win32 calls, you open the first file instead.

Добавлено:

Victor_VG

Цитата:
и только получив подтверждение оператора убирать их
Кстати, XYplorer делает это автоматически для любого файла, к которому прикоснётся
Автор: Victor_VG
Дата сообщения: 01.09.2015 22:58
pikorembo

Знаю, а если эта автоматика боком выйдет? Именно тут хардлинки бы нас и выручили - и овцы целы (данные доступны без ограничений) и волки сыты - имена не повреждены и с ними можно позже спокойно разобраться...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160

Предыдущая тема: Прога для поиска картинок в интернете.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.