提取后删除 SFX 文件

提取后删除 SFX 文件

我创建了一个 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) 档案本身。另一个解决方案似乎是删除已解压的文件。

  1. 选择Default64.SFX对于 SFX 模块高级 SFX 选项对话,模块标签。
  2. 在里面设置选项卡添加以下带引号的文本:“%comspec%”/ c del“%sfxname%”
  3. 在里面设置选项卡不检查等待并返回退出代码盒子

如果您想要调试,请将 /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

相关内容