我创建了一个 SFX 来提取一些文件。提取后,我需要删除 SFX 文件。据我所知,WinRar 不提供这样的选项。所以我想运行一些 DOS 命令提示符(如 bat)。
这是我迄今为止的代码(不起作用):
SETUP=cmd /c del /f /q "file-to-delete"
它打开cmd,闪烁然后关闭......
有类似问题的人:http://www.msfn.org/board/topic/34506-sfx-remove-file-after-extraction/
答案1
看看这是否有效 - 包括文件的准确路径,看看它是否会删除它。如果可以,那么您可以尝试相对路径。
SETUP="%comspec%" /c del "c:\program location\file-to-delete"
如果失败,则将此命令包含在文件所在的 bat 文件中,然后在 WinRar 指令中使用该 bat 文件删除 SFX 文件。
@echo off
del "file-to-delete"
答案2
您必须选择 SFX 档案的 GUY 模式。64 台机器上的 32 位 rar 模式不会删除 64 台机器上的 64 位 rar 会删除该文件。
否则,您可以使用 powershell 在 cmd 中删除文件夹。
powershell "rd -r \"%PROGRAMFILES%\company\folder\""
答案3
此解决方案会删除自解压 (SFX) 档案本身。另一个解决方案似乎是删除已解压的文件。
- 选择Default64.SFX对于 SFX 模块高级 SFX 选项对话,模块标签。
- 在里面设置选项卡添加以下带引号的文本:“%comspec%”/ c del“%sfxname%”
- 在里面设置选项卡不检查等待并返回退出代码盒子
如果您想要调试,请将 /c 更改为 /k,以保持命令窗口打开。存档注释应该看起来像这样。
;The comment below contains SFX script commands
Setup="%comspec%" /c del "%sfxname%"
Silent=2
Overwrite=1
使用 /k 后可以在命令行显示可用变量
E:\New folder>SET SFX
sfxcmd="E:\New folder\ReadMe.exe"
sfxname=E:\New folder\ReadMe.exe
sfxpar=
sfxstime=2020-11-13-16-45-37-025