Как прочитать раздел комментариев из файла winrar - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь прочитать раздел комментариев многих файлов .rar с помощью winrar cli и передать его в текстовый файл.Команда WinRAR -z открывает секцию комментариев, однако она не может быть передана по конвейеру.Спасибо за помощников.

1 Ответ

0 голосов
/ 30 мая 2018

Папка программных файлов WinRAR содержит версию консоли Rar.exe и текстовый файл Rar.txt, который является руководством для версии консоли.Поэтому при использовании Rar.exe рекомендуется дважды щелкнуть текстовый файл Rar.txt, чтобы открыть его в связанном приложении, таком как Блокнот Windows, и прочитать его сверху вниз.

Rar.txt содержит объяснение RARкоманда cw:

    cw      Write archive comment to specified file.<br>
            Format of output file depends on -sc switch.<br>
            If output file name is not specified, comment data will be
            sent to stdout.<br>
            Examples:<br>
            1) rar cw arc comment.txt<br>
            2) rar cw -scuc arc unicode.txt<br>
            3) rar cw arc

Далее в нижней части поясняется переключатель -y, который также полезен для этой задачи в случае, если файл для записи комментария существуетуже, что вызвало бы запрос Rar.exe о том, что не следует использовать переключатель -y, если файл должен быть перезаписан.

И последний параметр -idq для использования тихого режима также полезен для предотвращения вывода на консоль.при записи всех комментариев из архивных файлов RAR в текстовые файлы.

Таким образом, задачу можно выполнить, запустив в окне командной строки:

for %I in ("C:\Path to RAR files\*.rar") do @"%ProgramFiles%\WinRAR\rar.exe" cw -idq "%I" "C:\Output Path\%~nI.txt"

Но как получитьвсе комментарии непосредственно в один текстовый файл?

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

@echo off
set "FirstFile=Yes"
set "CommentFile=C:\Output Path\AllComments.txt"
del "%CommentFile%" 2>nul

for %%I in ("C:\Path to RAR files\*.rar") do (
    if not defined FirstFile (
        >>"%CommentFile%" echo ================================================================================
        >>"%CommentFile%" echo/
    ) else set "FirstFile="
    >>"%CommentFile%" echo %%I
    >>"%CommentFile%" echo/
    "%ProgramFiles%\WinRAR\Rar.exe" cw -idc -y "%%I" CON: >>"%CommentFile%"
)

set "CommentFile="
set "FirstFile="

CON:указывается как файл комментариев, чтобы получить комментарий, записанный в консоль, вместо экрана, который перенаправляется рядом с файлом комментария с добавлением текста.

Переключатель -idc используется для предотвращения просто вывода уведомления об авторских правах, нополучить вывод на английском языке Rar.exe строка Comment is not present с пустой строкой сверху и без пустой строки ниже, если обработанный файл * .rar не содержит комментариев.Конечно, было бы также возможно использовать -idq, чтобы ничего не записывать во все текстовые файлы комментариев для файла * .rar, не содержащего комментарий.

Примечание: Для комментариев не ASCIIна котором дополнительно используется переключатель -sc или на именах файлов / путях с символами, отличными от ASCII, все комментарии в одном решении с текстовыми файлами, как они опубликованы, должны быть адаптированы или вообще невозможны в зависимости от среды, в которой выполняется сам пакетный файл.создайте текстовый файл, содержащий все символы в правильном кодировке.

...