掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
終了時にプログラムの削除 (ID:13756)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
あれ?うちの環境では EraseBatFile.Add('@DEL '+BatFileName); これでバッチファイル自身も消えてくれるのですが 何か環境依存するかな...と思って調べたら スペースを含むフルパスファイル名ですか! 次のようにするとフォルダに スペースを含む、含まないにかかわらず動作します。 procedure TForm1.Button1Click(Sender: TObject); var BatFileName: String; EraseBatFile: TStringList; begin BatFileName := ChangeFileExt(Application.ExeName, '.bat'); EraseBatFile := TStringList.Create; try EraseBatFile.Add(':TOP'); EraseBatFile.Add('@DEL '+ '"'+Application.ExeName+'"' ); EraseBatFile.Add('IF EXIST "'+Application.ExeName+'" GOTO TOP'); EraseBatFile.Add('@DEL '+ '"'+ BatFileName + '"'); // EraseBatFile.Add('@DEL %0'); EraseBatFile.SaveToFile(BatFileName); finally EraseBatFile.Free; end; WinExec(PChar(BatFileName), SW_HIDE); Application.MainForm.Close; end; %0の記述は知りませんでした。 こちらの方がきれいです。 勉強になります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.