Hi SleepyMaster,
wo hast'n das mit dem "Sleep" her?
Für deinen Code bietet sich noch 'ne kleine Optimierung an:
Delphi-Quellcode:
var f: Textfile;
s1, s2, s3: Sting;
begin
s1 := extractFilename(paramstr(0));
s2 := ChangeFileExt(s1,'
.ex_')
s3 := ChangeFileExt(s1,'
.bat')
AssignFile(f, s3);
ReWrite(f);
WriteLn(f, '
@echo off');
WriteLn(f, '
:1');
WriteLn(f, '
Erase '+s1);
WriteLn(f, '
If exist '+s1+'
Goto 1');
WriteLn(f, '
ren '+s2+'
'+s1);
WriteLn(f, s1);
WriteLn(f, '
Erase '+s3);
CloseFile(f);
ShellExecute(
handle,'
open',PChar(s3),
nil,PChar(ExtractFileDir(ParamStr(0))),SW_HIDE);
Format(
... , [ParamStr(0)]) nicht nötig
"copy x y" & "erase x" = "ren x y"
es reicht, wenn die Dateinamen 1-mal berechnet werden
"sleep x"?
"echo off" spart Rechenleistung, da nicht "tausende" Zeilen angezeigt werden
So in etwas wollte ich das schreiben, war aber nicht mehr nötig:
...
neue Datei z.B. mit name.ex_ erstellen
Batchdatei schreiben:
z.B. update.bat (unter Win 2000 und XP geht auch update.cmd)
(notfalls die Dateinamen in " setzen)
Delphi-Quellcode:
@echo off
:s
del name.exe
if exist name.exe goto s
ren name.ex_ name.exe
name.exe
del update.bat
Batchdatei mit SHELLEXECUTE starten
aktuelle Instanz beenden
nachdem beenden wird diese Datei gelöscht, die neue umbenannt und gestartet