抽出後に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. 選択するデフォルト64.SFXSFXモジュールの高度な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

関連情報