如何阅读winrar文件cli中的评论部分

时间:2018-05-29 11:39:03

标签: batch-file command-line-interface winrar

我正在尝试使用winrar cli阅读许多.rar文件的评论部分并将其传输到文本文件。 WinRAR -z命令打开评论部分,但无法通过管道传输。 谢天谢地。

1 个答案:

答案 0 :(得分:1)

WinRAR 的程序文件文件夹包含控制台版本Rar.exe和文本文件Rar.txt,它是控制台版本的手册。因此,在使用Rar.exe时,建议双击文本文件Rar.txt以在Windows记事本等相关应用程序中打开它,并从上到下阅读。

Rar.txt包含RAR命令cw的解释:

    cw      Write archive comment to specified file.
Format of output file depends on -sc switch.
If output file name is not specified, comment data will be sent to stdout.
Examples:
1) rar cw arc comment.txt
2) rar cw -scuc arc unicode.txt
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文件的所有注释文本文件中写入任何内容。

注意:对于另外使用哪个开关-sc或非ASCII字符的文件名/路径的非ASCII注释,必须调整一个文本文件解决方案中的所有注释或根本不可能,具体取决于执行批处理文件本身的环境,以生成包含所有正确编码字符的文本文件。