我正在尝试创建一个使用 WinRar 提取到“%USERPROFILE%\Desktop”的自解压存档。但是,当我运行它时,它会解压到 SFX 的当前目录,而不是我的桌面。提取选项的路径是否有效?
我正在使用 32 位命令行模块。
我还检查了静音模式的“全部隐藏”框,它似乎完全没有做任何事情,命令提示符窗口仍然出现,显示有关提取内容的信息。
我希望 SFX 存档将 .exe 和 SFX 文件中包含的文件夹提取到桌面,而不会弹出任何消息。
有什么建议么?
可以创建一个 SFX RAR 存档,将所有文件和文件夹直接提取到
"%USERPROFILE%\Desktop"
而不显示窗口。
这可以在选择文件和文件夹并单击工具栏中的图标添加后使用WinRAR完成
"%USERPROFILE%\Desktop"
,这会导致自动选择正确的选项Absolute path,如果模块WinCon.sfx用于 SFX 存档,则将始终显示命令提示符窗口,因为在这种情况下,Windows 会在 SFX 存档启动时自动检测到这是一个控制台应用程序并打开一个命令提示符窗口,其中控制台 SFX 是执行。
也可以使用批处理文件来创建这样的 SFX 存档:
@echo off
echo ;The comment below contains SFX script commands>"%TEMP%\SfxOptions.txt"
echo/>>"%TEMP%\SfxOptions.txt"
echo Path="%%USERPROFILE%%\Desktop">>"%TEMP%\SfxOptions.txt"
echo Silent=^1>>"%TEMP%\SfxOptions.txt"
"%ProgramFiles%\WinRAR\Rar.exe" a -c -cfg- -ep1 -idq -m5 -mdg -r -s -sfx -y "-z%TEMP%\SfxOptions.txt" "Path\Name of your SFX.exe" "Path\Folder to add" "Path\File to add"
if errorlevel 1 goto Failure
del "%TEMP%\SfxOptions.txt"
goto :EOF
:Failure
del "%TEMP%\SfxOptions.txt"
echo/
echo Error on creation of "Path\Name of your SFX.exe"
echo/
pause
在此批处理文件中必须修改以供使用:
Rar.exe
以及 SFX 模块Default.sfx。使用的开关在WinRAR程序文件夹中的文本文件Rar.txt中有说明。
关于 switch 的另一个注意事项-ep1
:
在将文件夹或文件添加到存档时,从名称中删除要添加到存档的文件夹和/或文件名称中最后一个反斜杠的所有内容。
在将文件夹添加到 RAR 存档时,如果在末尾指定了带或不带反斜杠的文件夹,则会有所不同。
例子:
像这样的目录树
被压缩
Rar.exe a -ep1 -r C:\Temp\Demo1.rar C:\Temp\MyFolder
存档中有以下文件和文件夹C:\Temp\Demo1.rar
使用时
Rar.exe a -ep1 -r C:\Temp\Demo2.rar C:\Temp\MyFolder\
或使用
Rar.exe a -ep1 -r C:\Temp\Demo2.rar C:\Temp\MyFolder\*
导致存档中的以下文件和文件夹C:\Temp\Demo2.rar