Was gibt denn das ShellExecute zurück? Und was tut das Batchfile, wenn du ans Ende (vor das exit) mal ein "pause" setzt und es nicht versteckt ausführen lässt?
Davon abgesehen ist die Batch fehleranfällig. Ich korrigiere mal etwas:
Code:
@echo off
if "%~1"=="" goto :EOF
set "at=%~1AucTool.exe"
:s
del "%at%"
if exist "%at%" goto s
copy "%~dp0AucTool.exe" "%at%"
copy "%~dp0Auc1.dll" "%~1Auc1.dll"
copy "%~dp0Auc2.dll" "%~1Auc2.dll"
del "%~dp0AucTool.exe"
call "%at%"
exit
Sich darauf zu verlassen, dass
- in den Pfaden keine Leerzeichen vorkommen
- die relativen Pfade bzw. das Arbeitsverzeichnis stimmen/stimmt
ist fahrlässig, wenigstens aber leichtsinnig. Daher immer Anführungszeichen bei der Verwendung von Variablen, die Pfade enthalten, benutzen. Und immer absolute Pfade angeben, dann gibt es keinerlei Missverständnisse. Eigentlich fehlt da sogar noch eine Prüfung auf Existenz der
DLL-Dateien oder der Schalter /Y um sie zu überschreiben. Denn wenn es mindestens eine davon gibt, bleibt die Batch mit einer Nachfrage stehen.
MfG Dalai