Batch assoc auslesen und verarbeiten
Guten Tag,
leider scheitere ich bei assoc auslesen:
Ich möchte gerne wissen, ob Excel 12 installiert ist. Wenn nicht, soll eine andere Sprungmarke erreicht werden
Würde mich über Hilfe freuen!
OKIDOKI
leider scheitere ich bei assoc auslesen:
Ich möchte gerne wissen, ob Excel 12 installiert ist. Wenn nicht, soll eine andere Sprungmarke erreicht werden
@echo off
assoc .xlsx |FIND "12"
if errorlevel=0 GOTO vorhanden
if errorlevel=1 GOTO fehlt
:weg
cls
echo Excel vorhanden
Pause
:fehlt
cls
echo Excel fehlt
Pause
echo ende
Pause
Würde mich über Hilfe freuen!
OKIDOKI
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 180364
Url: https://administrator.de/contentid/180364
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo OKIDOKI!
Vorweg: Wenn Du unterschiedliche Zweige verwendest, solltest Du deren Ende anders (= mit einem "
... ansonsten:
... und ganz nebenbei: Wenn Du aus einer CMD-Shell heraus testest, wirst Du "
Alternativvariante:
Grüße
bastla
Vorweg: Wenn Du unterschiedliche Zweige verwendest, solltest Du deren Ende anders (= mit einem "
goto
") als nur mit "Pause
" gestalten ...... ansonsten:
assoc .xlsx |FIND "12"||goto :fehlt
cls
echo Excel vorhanden
pause
goto :ende
:fehlt
cls
echo Excel fehlt
pause
:ende
echo ende
pause
pause
" viel weniger oft benötigen ..Alternativvariante:
cls
assoc .xlsx |FIND "12" && (
echo Excel vorhanden
) || (
echo Excel fehlt
)
pause
echo ende
pause
bastla
Moin OKIDOKI,
den ErrorLevel musst du immer vom höchsten erwarteten bis zum niedrigsten möglichen (=0 == kein Fehler) prüfen.
Dein Schnipsel könnte durchaus arbeiten wie designed, wenn du die Zeilen 03 und 04 vertauschst.
Grüße
Biber
[Edit] ....diese Rechtssüberholer hier ...*tztztz [Edit]
[Edit2] @bastla
[Edit2]
den ErrorLevel musst du immer vom höchsten erwarteten bis zum niedrigsten möglichen (=0 == kein Fehler) prüfen.
Dein Schnipsel könnte durchaus arbeiten wie designed, wenn du die Zeilen 03 und 04 vertauschst.
Grüße
Biber
[Edit] ....diese Rechtssüberholer hier ...*tztztz [Edit]
[Edit2] @bastla
und das unnötige "=" entfernst ...
Zu meiner Überraschung schluckt M$ dieses versehentliche "=" -->d:\temp>if errorlevel=1 echo zzz
zzz
d:\temp>if errorlevel=2 echo zzz
d:\temp>if errorlevel=0 echo zzz
zzz
d:\temp>echo %errorlevel%
1
@SlainteMhath
Es gäbe zwar auch noch die Variante
(damit wird auf >=1 abgefragt und das funktioniert auch zB innerhalb einer "
Grüße
bastla
Es gäbe zwar auch noch die Variante
if errorlevel 1 goto :wherever
for
"-Schleife), aber ich würde weder noch (siehe oben) verwenden ...Grüße
bastla
@Biber
Grüße
bastla
... wenn du die Zeilen 03 und 04 vertauschst
... und [Edit] auch nicht [/Edit] das [Edit] trotzdem [/Edit] unnötige ([Edit] und auch für mich überraschend folgenlose [/Edit]) "=" entfernst ...Grüße
bastla
moin,
"Angenommen", es handelt sich um eine Domainumgebung und der abfragende User ist einer mit nem Servergespeicherten Profil.....
Dann greift das Ding nicht wirklich....
Assoc gibt es sowohl 4 Maschinen als auch 4 Benutzer und damit nicht wirklich geeignet.
Einen Ast von
Gruß
PS: >nul 2>nul wirst du sicher auch noch brauchen können.
mooooment....
Das ist nicht ganz richtig"Angenommen", es handelt sich um eine Domainumgebung und der abfragende User ist einer mit nem Servergespeicherten Profil.....
Dann greift das Ding nicht wirklich....
Assoc gibt es sowohl 4 Maschinen als auch 4 Benutzer und damit nicht wirklich geeignet.
Einen Ast von
- "HKLM\SOFTWARE\WOW6432\Microsoft\Office\12.0\Excel"
- bzw. "HKLM\Software\Microsoft\Office\12.0\Excel"
- oder "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" - den genauen hab ich nicht im Kopf.
Gruß
PS: >nul 2>nul wirst du sicher auch noch brauchen können.