Как уже говорилось ранее, файлы могут находиться в разных путях, но, как я покажу далее, это не всегда так.
Если вы используете WinRAR для отображения содержимого файла, и ваши параметры установлены следующим образом, то, похоже, у вас есть только файлы с одинаковым именем, но они находятся по разным путям.
- Параметры -> Список файлов -> Просмотр плоских папок (ctrl + h)
- Параметры -> Список файлов -> Детали
После столбца CRC32 есть один, который называется Path. Если это не так, извлечение не должно быть проблемой, если:
- Извлечь -> Путь и параметры извлечения -> Дополнительно -> Извлечь относительные пути установлено.
Если это Не извлекать пути , WinRAR потребуется попросить вас переименовать их из-за ограничений файловой системы.
Я предполагаю, что командная строка unrar не будет проблемой в этом случае, потому что вам нужно указать дополнительные параметры, чтобы изменить поведение по умолчанию.
Для архива RAR возможно иметь несколько файлов с одинаковым именем в одном каталоге. Если вы используете Windows, используйте "C: \ Program Files \ WinRAR \ Rar.exe «
вместо rar в командной строке в следующих примерах.
Создайте новый файл и добавьте его в архив RAR. Вы также можете проверить изменения, перечислив их содержимое.
rar a rarfile.rar testfile.txt
rar l rarfile.rar
rar a rarfile.rar testfile.txt
Если вы попытаетесь повторно добавить этот файл, rar заменит уже добавленный файл с тем же именем.
Updating archive rarfile.rar
Updating testfile.txt OK
Done
Создайте другой файл или переименуйте первый и добавьте его в файл RAR.
move testfile.txt second.txt (new file)
rar a rarfile.rar second.txt (add it)
rar lb rarfile.rar (list archive, bare info)
Переименуйте второй файл в имя первого.
rar rn rarfile.rar second.txt testfile.txt
Таким образом вы создаете RAR-файл с несколькими файлами с одинаковым именем по одному пути. Эти шаги будут похожи в WinRAR. Если вы попытаетесь переименовать файл еще раз, имя файла всех файлов в этом каталоге тоже изменится .
Зачем кому-то это делать?
Единственное объяснение, которое я могу придумать, это то, что человек, который создал этот архив, хотел имитировать систему контроля версий / резервного копирования. Но если вы хотите извлечь только одну конкретную версию, а не первую, WinRAR извлекает неверный файл. Кажется, я обнаружил очень неясную ошибку WinRAR: -)
Edit: кажется плохим объяснением после нахождения этого в документации RAR:
-ver[n] File version control
Forces RAR to keep previous file versions when updating
files in the already existing archive. Old versions are
renamed to 'filename;n', where 'n' is the version number.
By default, when unpacking an archive without the switch
-ver, RAR extracts only the last added file version, the name
of which does not include a numeric suffix. But if you specify
a file name exactly, including a version, it will be also
unpacked. For example, 'rar x arcname' will unpack only
last versions, when 'rar x arcname file.txt;5' will unpack
'file.txt;5', if it is present in the archive.
If you specify -ver switch without a parameter when unpacking,
RAR will extract all versions of all files that match
the entered file mask. In this case a version number is
not removed from unpacked file names. You may also extract
a concrete file version specifying its number as -ver parameter.
It will tell RAR to unpack only this version and remove
a version number from file names. For example,
'rar x -ver5 arcname' will unpack only 5th file versions.
If you specify 'n' parameter when archiving, it will limit
the maximum number of file versions stored in the archive.
Old file versions exceeding this threshold will be removed.