anmelder
Goto Top

Prüfung ob ImageX in PATH Pfad existiert

Hallo,

mit folgendem Code prüfe ich ob ImageX auf einem Rechner existiert. Der Pfad weicht von dem Batchpfad ab, wird wohl vom PATH Befehl gefunden.

 ECHO ImageX wird gesucht...
 IMAGEX /? >NUL 1>NUL 2>NUL

REM Fehler auch bei IF ERRORLEVEL 2
IF %ERRORLEVEL% EQU GTR 1 (
  SET IMGInstalliert=Ja
  REM Errorlevel zurück auf 0 setzen
  CD > NUL
 )

Eine zuverlässige Abfrage bekomme ich nicht hin:

Wenn ImageX gefunden wurde gibt es je nach Laune Errorlevel 0 oder 1 zurück. Einen Zusammenhang erkenne ich nicht. Manchmal läuft IMageX einfach so durch, manchmal dauert es 12 Sekunden bis der Hilfetext ausgegeben wird.
Wenn ImageX nicht gefunden wurde ist der Errorlevel nicht zuverlässig 9009, es kann auch 0 sein. Wann und weshalb ist mir auch nicht klar, es scheint aber niemals in der Konsole aufzutreten sondern nur in einer Batch.

Wie prüfe ich die Existenz eines Befehls zuverlässig?

Content-Key: 390175

Url: https://administrator.de/contentid/390175

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: rubberman
rubberman 20.10.2018 um 17:46:25 Uhr
Goto Top
Klingt alles sehr merkwürdig.

1) Gib das path Kommando in einen CMD Prompt ein und prüfe ob der Pfad zu ImageX dort enthalten ist.
2) Prüfe genau ob du in deinem Batchcode nicht zufällig die %path% Umgebungsvariable überschreibst.
3) Sichere ab, dass dein Batchscript nicht auch zufälligerweise ImageX.bat oder ImageX.cmd heißt, und auch sonst keine ausführbaren Dateien namens ImageX im Arbeitsverzeichnis liegen.


Steffen
Mitglied: anmelder
anmelder 21.10.2018 um 09:28:49 Uhr
Goto Top
Ich habe das Problem jetzt mit einer FOR /F Schleife lösen können. Wenn der Befehl vorhanden ist gibt er einen Text aus, sonst ist die Ausgabe leer. Das ist zwar unüblich aber führt zum gewünschtem Ergebnis.

Trotzdem bin ich noch an einer Lösung interessiert wenn noch jemanden etwas einfällt. Ich vermute daß ImageX einen Fehler hat weil manchmal bei imagex/? Errorlevel 1 zurückgegeben wird. Es ist unnormal daß eine Anfrage mit ? als Fehler bewertet wird.

Um PATH Probleme zu vermeiden habe ich es nochmals neu aufgebaut.

1. ImageX wird in das Verzeichnis obiger Batch kopiert.
2. Ich benutzt die normale EIngabeaufforderung, nicht die des ADK.
3. Ich benenne die ImageX in ImageX2 um um das Programm im Fehlerfall zu testen. EIn PATH zum ADK besteht nicht.
4. Die Rückmeldungen sind wie oben beschrieben.
5. Wenn ich die Befehle:
IMAGEX /?
IF ERRORLEVEL 2 echo Ja
direkt in die Eingabeaufforderung eingebe habe ich immer das richtige Ergebnis.
Mitglied: rubberman
Lösung rubberman 21.10.2018 um 12:59:10 Uhr
Goto Top
Wenn ImageX selbst einen Bug hat, kannst du wenig machen. In dem Fall einfach prüfen, ob die Datei in der PATH Umgebung liegt.
for %%i in ("imagex.exe") do if "%%~$PATH:i"=="" echo existiert nicht
Wenn kein Path Eintrag existiert funktioniert das natürlich ebenso wenig.

Falls ImageX im Arbeitsverzeichnis des Scripts liegt, reicht ein if exist "imagex.exe" ...für dieselbe Prüfung.

Steffen
Mitglied: anmelder
anmelder 25.10.2018 um 18:04:21 Uhr
Goto Top
Danke das läuft face-smile