Почему файл .RAR содержит разные файлы с одинаковыми именами - PullRequest
3 голосов
/ 16 июня 2011

Я получил файл .RAR, содержащий разные файлы с одинаковыми именами.

Например,

index.txt 40 Text Document 04/01/2010 4:40PM
index.txt 22 Text Document 04/01/2010 4:42PM
index.txt 10 Text Document 04/01/2010 4:45PM
index.txt 13 Text Document 04/01/2010 4:50PM

Почему?

Ответы [ 2 ]

5 голосов
/ 17 июня 2011

Как уже говорилось ранее, файлы могут находиться в разных путях, но, как я покажу далее, это не всегда так.

Если вы используете 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.
1 голос
/ 16 июня 2011

они, скорее всего, находятся по разным путям.

попробуйте вывести полный путь.или посмотрите, что произойдет, когда вы их извлечете.

вы, вероятно, увидите что-то вроде:

index.txt
path1 / index.txt
path2 / index.TXT

и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...