35

.BATファイルを完了後に自分で削除させる方法は?プロセスを終了する単純なbatファイルがあります。その.BATファイル自体を削除したい。

4

7 に答える 7

58

Merlyn Morgan-Graham の回答では、実行中のバッチ スクリプトを削除できますが、「バッチ ファイルが見つかりません。」というエラー メッセージが生成されます。誰にも見られないほどの速さでフラッシュします。ただし、スクリプトの終了後もコンソールが開いたままの場合、エラー メッセージは非常に望ましくありません。

John Faminella は、バッチ ファイルをエラーなく完全に削除するには別のプロセスが必要であるという正しい考えを持っています。タスクのスケジュールを設定することもできますが、もっと簡単な方法があります。START を使用して、同じコンソール内で新しい削除プロセスを開始します。プロセスの開始と実行には時間がかかるため、削除が発生する前に親スクリプトが正常に終了する可能性があります。

start /b "" cmd /c del "%~f0"&exit /b

2015-07-16 更新

エラー メッセージを生成せずにバッチ スクリプト自体を削除する、もう 1 つの非常に巧妙な方法を発見しました。この手法は、新たに発見された GOTO の動作 (一部のロシア人によって発見された) に依存しています。

要約すると、呼び出し元のコンテキストで連結されたコマンドを実行できることを除いて、 の(GOTO) 2>NULように動作します!EXIT /B

だからあなたが必要とするのは

(goto) 2>nul & del "%~f0"
于 2013-12-02T16:34:11.507 に答える
36
@ECHO OFF
SETLOCAL

SET someOtherProgram=SomeOtherProgram.exe
TASKKILL /IM "%someOtherProgram%"

ECHO "This script will now self-destruct. Please ignore the next error message"
DEL "%~f0"

DEL 行は、バッチ ファイル内で最後に実行する方がよいことに注意してください。そうしないと、運が悪くなります :)

これは見苦しいエラー メッセージを出力しますが、問題はなく、この方法でコードの混乱が少し軽減されます。エラーメッセージを取り除くことに関心がある場合は、dbenham の回答を参照してください。

于 2010-05-22T20:44:00.620 に答える
4

OSについては言及していませんが、これがWindows XP Professional上にあり、適切な権限を持っている場合、バッチファイルでワンショットのWindowsスケジュールタスクをスケジュールして、後でファイルを削除できます. ここschtasksに記載されているコマンドを使用します。

そうしないと、実行中のファイルを削除することはできません。さらに、使用中の実行可能ファイルを削除しようとすることは、多くのウイルス対策プログラムによって非常に疑わしい動作と見なされるため、これらにも違反する可能性があります.

于 2010-05-22T17:09:17.307 に答える
1

バッチファイルの最後の行にこのコマンドを追加するだけです

Del batch_file_name.bat

batch_file_name.batバッチファイルの名前です

乾杯

于 2010-11-04T05:40:36.173 に答える
0

ゴーストセルフとして「最後のこと」を行うインラインの次のコマンド。終了コマンドまたは終了する前のその他のものである可能性があります。

@echo off
del "%~f0" && echo All's done. I must exit! && pause > nul && exit
于 2021-07-13T00:30:52.910 に答える