いくつかのファイルを抽出するために 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) アーカイブ自体を削除します。他の解決策では、抽出されたファイルを削除するようです。
- 選択するデフォルト64.SFXSFXモジュールの高度な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