标签: winrar

使用winrar命令行创建zip存档

我正在使用以下winrar命令行来创建zip存档:

rar.exe a -df -ep -ag[yyyyMMddhhmmss] -ms[txt] C:\MyZipFile.zip C:\tmp\MyFiles*.txt
Run Code Online (Sandbox Code Playgroud)

创建的档案是RAR格式而不是ZIP格式.有没有办法创建常规ZIP而不是RAR档案?

zip command winrar

43
推荐指数
2
解决办法
7万
查看次数

如何进行自解压和运行安装程序

所以目前我的用户下载一个zipfile,解压缩然后运行setup.exe - 我希望他们只需点击一下即可.使用http://www.wikihow.com/Use-7Zip-to-Create-Self-Extracting-excutables我可以创建一个自解压的exe,但它实际上并没有运行安装程序.

从这个问题

为什么7zip在制作SFX安装程序时忽略我的InstallPath?

看来我还需要一个.sfx文件,所以我从另一个问题复制并创建了一个包含以下内容的文件

;!@Install@!UTF-8!
InstallPath="C:\\test"
GUIMode="2"
RunProgram="setup.exe"
;!@InstallEnd@!
Run Code Online (Sandbox Code Playgroud)

并调用setup.sfx并将其与其他文件一起存档

setup.ini
setup.exe
setup.ico
install.jar
JVM32 (folder)
Run Code Online (Sandbox Code Playgroud)

但它没有任何区别,我还需要做些什么.

补充问题,我也有WinRar,它是否影响最终用户体验我是否使用7Zip或Winrar?

7zip sfx winrar

42
推荐指数
2
解决办法
11万
查看次数

WinRAR"总路径和文件名长度不得超过260个字符"

WinRAR给出了路径/文件名长度仅为216个字符的260个字符限制错误.见下文.原因是提取目标是一个工具很长的临时文件夹.有关此文件夹的详细信息,请参阅https://superuser.com/questions/154969/where-winrar-extracts-files.

!   C:\<path>\<filename.rar>: Cannot create <filename>
Total path and file name length must not exceed 260 characters
Run Code Online (Sandbox Code Playgroud)

我该如何修改?

winrar

17
推荐指数
1
解决办法
4万
查看次数

如何使用WinRAR命令行提取ZIP文件?

在尝试提取zip文件时,我收到错误:

c:\ path \name.zip不是RAR存档
没有要提取的文件

我的代码是:

p.StartInfo.FileName = @"C:\Program Files\WinRAR\rar.exe";
p.StartInfo.Arguments = string.Format("x -o- {2} \"{0}\" * \"{1}\"\\ ",
  szFN,
  outFolder,
  passWord == null ? "" : string.Format("-p\"{0}\"", passWord));
Run Code Online (Sandbox Code Playgroud)

GUI版本可以提取zip和7z文件.

为什么这不起作用?如何提取zip和7z文件?

(注意:我有7zip的不同源代码.我想我可以合并这两个,只有当文件有rar扩展时才使用上面的.但我不喜欢那个解决方案.)

command-line rar winrar unrar

16
推荐指数
2
解决办法
7万
查看次数

如何使用WinRAR创建自安装可执行文件?

我见过可执行文件提取自己并在setup.exe之后运行压缩文件:双击该文件解压缩它然后运行以前压缩的文件setup.exe.

我怎么能做到这一点?我想使用WinRAR,如何将setup.exe解压缩后的自解压可执行文件解压缩到临时文件夹?

installer self-extracting winrar

13
推荐指数
1
解决办法
5万
查看次数

在Winrar中排除文件夹

Winrar的一天

我想做的就是使用通配符排除文件夹及其内容,甚至在阅读文档后,它变成了一个猜谜游戏......

所以我的试验床看起来像:

C:\!tmp1\f1
C:\!tmp1\f1\f1.txt
C:\!tmp1\f1\a
C:\!tmp1\f1\a\a.txt
C:\!tmp1\f2
C:\!tmp1\f2\f2.txt
C:\!tmp1\f2\a
C:\!tmp1\f2\a\a.txt
Run Code Online (Sandbox Code Playgroud)

我正在执行:

C:\>"c:\program files\winrar\winrar.exe" a -r !tmp1.rar !tmp1
Run Code Online (Sandbox Code Playgroud)

这给了我一个rar!tmp1作为根(唯一的顶级文件夹).

排除开关是-x<filepathpattern>并且可以包括多次.

所以,鉴于我们想要排除f2及其所有子内容......

-x*\f2\*
Run Code Online (Sandbox Code Playgroud)

删除内容,但离开f2

-xf2
Run Code Online (Sandbox Code Playgroud)

什么都不做 - 包括所有

-x\f2
Run Code Online (Sandbox Code Playgroud)

什么都不做 - 包括所有

-x*\f2
Run Code Online (Sandbox Code Playgroud)

什么都不做 - 包括所有(现在我很生气),所以肯定一定是......

-x\f2\
Run Code Online (Sandbox Code Playgroud)

不,什么都不做 - 包括所有.所以它有GOT ......

-x*\f2\
Run Code Online (Sandbox Code Playgroud)

地狱不,什么都不做 - 包括所有.我已经知道了

-x*\f2\*
Run Code Online (Sandbox Code Playgroud)

删除内容,但离开f2.我们走吧......

-x*f2\
Run Code Online (Sandbox Code Playgroud)

什么都不做 - 包括所有.GRRRR.啊哈!怎么样...

-x!tmp1\f2\
Run Code Online (Sandbox Code Playgroud)

不,什么都不做 - 包括所有.WTF.好吧,所以GOT要......

-x!tmp1\f2
Run Code Online (Sandbox Code Playgroud)

圣洁的莫莉,它奏效了!嗯,那怎么来....

-x*\f2
Run Code Online (Sandbox Code Playgroud)

不起作用?这是一个小恶魔,让我沿着这条疯狂的道路开始,应该有效!

鉴于这一切,我是否敢于尝试*/a/*追踪目录,删除内容和目录?

-x*\a
Run Code Online (Sandbox Code Playgroud)

不起作用,当然,什么都不做.

-x*\*\a
Run Code Online (Sandbox Code Playgroud)

不起作用,当然,什么都不做.

-x!tmp1\*\a
Run Code Online (Sandbox Code Playgroud)

不.但...

-x*\a\*
Run Code Online (Sandbox Code Playgroud)

删除两个目录的内容,但保留文件夹.所以,在绝望中我可以使用-ed不会存储空文件夹的开关,但这是一个广泛的黑客,我想消除指定的文件夹不是所有空文件夹.

随着我对winrar的不满,我正在向前传递信息的指挥棒,我们将知道如何使用通配符而不是使用-ed开关专门排除文件夹及其内容.

winrar

12
推荐指数
2
解决办法
1万
查看次数

我们应该使用什么压缩格式; 我们应该让DEFLATE(.zip)休息吗?

由于大多数Linux发行版都放弃了gzip和bzip2来支持LZMA2来压缩它们的包,以及许多平台上的许多开源实现,我想知道:我们不应该将DEFLATE和.zip格式(不幸的是一遍又一遍地反复)放弃,并继续采用其他现代方式分发我们的(源)包?

GNU tar支持J交换机,它使用xz(另一个LZMA2压缩器)作为过滤器:

$ tar cJf foo.tar.xz foo/
Run Code Online (Sandbox Code Playgroud)

但是,我倾向于使用7z(p7zip实现),它是7zaLinux下的朋友,用于创建存档.在创建档案时,我仍然使用"避免tar-bombs"范例,这意味着档案中有一个目录,因此从命令行中提取不会导致当前目录中的文件溢出(这是Linux上的标准运作方式,类似于tar,但在Windows下,它似乎要少得多.

无论如何,似乎由于在软件包中使用(例如Fedora RPMs和Ubuntu DEB),以及tarLZMA2是bzip2后使用的"下一个最好的东西" 等工具的过滤器.它具有很高的压缩率(在标准设置中远远超过bzip2)并且速度非常快(压缩比gzip略慢,

我自己做了一些基准测试,但我想在一些更广泛的基准测试中转向现场:

现在,你会注意到,作为参考实现的7-zip并没有出现在第一位.然而,Freearc使用它自己的.arc格式,这不是真正的跨平台能力,与80年代的 ARC 不兼容.nanozip不是开源的,这是一种低迷,但它的算法很重要,而不是归档!

无论如何,现在使用7-zip及其派生实现(xz)的性能不再是问题,并且压缩率本身就说明了,我想将我的源包分发为.7z.tar.xz存档.但是,我面前有两个障碍,我似乎无法接受:

  1. WinRAR的倡导者.不要误会我的意思,我对WinRAR或其用户没有怨恨,只是我不能在Linux上真正制作RAR,而且没有必要,因为我们有免费的LZMA2工具.正如我所说,自从成为发行包的一个组成部分后,它可以在任何现代发行版中使用.由于需要大约在同一时间做出.7z.rar和LZMA2文件一般都比较小,我不明白为什么不能使用7-Zip.

  2. tar档案必须是zip或bzip2,没有例外.这很难.为什么有这么多人对gzip印象深刻?甚至bzip2在大多数情况下都没有看到太多用法.当然,gzip很快,对于按需压缩(如Web服务器或创建大型镜像备份)而言,这是一个很好的观点.但是分发软件怎么样?LZMA2 非常不对称.虽然压缩需要时间,但解压缩速度非常快.

好的,现在我的问题出现了:

既然LZMA2可以说是下一个更好的压缩算法,为什么人们不会跳上火车呢?为什么人们仍然使用专有的WinRAR,压缩率较差,并且没有移植到Linux(除了unrar,但你显然无法创建存档).为什么Tarball仍然大部分都是gziped?

难道没有办法说服人们转向更新,更可靠的归档格式,这不仅是跨平台的,而且是免费的吗?当我给某人一个文件结尾时.7z,他们往往不知道该怎么做,这会改变吗?

哦,这是我自己做的小基准.我到处使用默认设置:

11837440 GNUtar_TAR.tar
10657984 Arc_ARC.arc
9632524 PA2010_TAR_BZip2.tar.bz2
9536967 PA2010_LHA_Frozen5.lzh
9510148 PA2010_ZIP_BZip2.zipx
9490211 …
Run Code Online (Sandbox Code Playgroud)

compression zip gzip 7zip winrar

11
推荐指数
1
解决办法
3069
查看次数

如何从批处理文件创建自动执行的WinRar SFX文件?

我有一个第三方安装程序,我希望我的用户能够下载并运行作为我编写的应用程序的先决条件.安装程序可以采用允许被动安装的参数,用户可以在其中查看进程的进度,但不必与安装进行交互.

以前,我通过在WinRar中创建SFX文件来完成此行为.在WinRAR GUI的选项中,您可以指定在解压缩归档后要启动的文件,以及应用程序的参数.

有没有办法创建SFX文件并使用控制台设置这些自动执行属性?我正在尝试创建一个处理所有这些的批处理文件.

以下是我目前的批处理文件内容:

C:\Progra~1\WinRAR\rar a -m0 installer_archive.rar install_me.exe
C:\Progra~1\WinRAR\rar s installer_archive.rar installer_auto_extractor.exe
Run Code Online (Sandbox Code Playgroud)

在最后一步之后,我应该怎么做才能更新SFX?

console batch-file sfx winrar

9
推荐指数
1
解决办法
2万
查看次数

只需使用WinRAR命令行批量压缩1个文件夹?

使用WinRAR命令行(C:\Program Files\WinRAR\rar.exe),我要做的就是压缩单个文件夹,(C:\Users\%username%\desktop\someFolder)并可能更改创建的.zip文件的名称.我尝试过"rar.exe a" C:\Users\%username%\desktop\someFile"并且它有效,但它会压缩另一个文件夹(不是我放的那个).

我究竟做错了什么?

你能提供解释吗(也许告诉我递归是什么因为我不熟悉它)?

谢谢

batch-file winrar

9
推荐指数
1
解决办法
3万
查看次数

用于压缩没有父文件夹的所有文件的批处理脚本

我想创建一个批处理文件,可以从我放在脚本中的文件夹中创建一个zip文件.这是我的脚本:

@REM ------- BEGIN xpi.bat ----------------
@setlocal
@echo off
set path="C:\Program Files\WinRAR\";%path%

winrar.exe a -afzip -m5 -ed -pTest -r c:\test.zip c:\MyFolder

REM ------- END xpi.bat ------------------
Run Code Online (Sandbox Code Playgroud)

上面的脚本创建了一个像这样的结构的zip文件,

MyFolder
--subFolder1
--subFolder2
--file1.txt
--file2.doc
--file3.js
Run Code Online (Sandbox Code Playgroud)

但我想要的形成的zip文件有这样的结构,没有父文件夹(MyFolder),

subFolder1
subFolder2
file1.txt
file2.doc
file3.js
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决这个问题?

注意:我使用的应用程序是WinRar

batch-file winrar

8
推荐指数
1
解决办法
3万
查看次数