Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch assoc auslesen und verarbeiten

Frage Microsoft Windows Tools

Mitglied: OKIDOKI

OKIDOKI (Level 1) - Jetzt verbinden

10.02.2012 um 14:49 Uhr, 2436 Aufrufe, 7 Kommentare

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

01.
@echo off 
02.
assoc .xlsx |FIND "12" 
03.
if errorlevel=0 GOTO vorhanden 
04.
if errorlevel=1 GOTO fehlt 
05.
 
06.
:weg 
07.
cls 
08.
echo Excel vorhanden 
09.
Pause 
10.
 
11.
:fehlt 
12.
cls 
13.
echo Excel fehlt 
14.
Pause 
15.
 
16.
echo ende 
17.
Pause
Würde mich über Hilfe freuen!
OKIDOKI
Mitglied: bastla
10.02.2012 um 14:56 Uhr
Hallo OKIDOKI!

Vorweg: Wenn Du unterschiedliche Zweige verwendest, solltest Du deren Ende anders (= mit einem "goto") als nur mit "Pause" gestalten ...

... ansonsten:
01.
assoc .xlsx |FIND "12"||goto :fehlt 
02.
cls 
03.
echo Excel vorhanden 
04.
pause 
05.
goto :ende 
06.
 
07.
:fehlt 
08.
cls 
09.
echo Excel fehlt 
10.
pause 
11.
 
12.
:ende 
13.
echo ende 
14.
pause
... und ganz nebenbei: Wenn Du aus einer CMD-Shell heraus testest, wirst Du "pause" viel weniger oft benötigen ..

Alternativvariante:
01.
cls 
02.
assoc .xlsx |FIND "12" && ( 
03.
    echo Excel vorhanden 
04.
) || ( 
05.
    echo Excel fehlt 
06.
07.
pause 
08.
echo ende 
09.
pause
Grüße
bastla
Bitte warten ..
Mitglied: SlainteMhath
10.02.2012 um 14:58 Uhr
Moin,

evtl. liegt daran, das GOTO und definierte Sprungmarken nicht übereinstimmen?

[...]
GOTO vorhanden
[...]
:weg
[...]
:fehlt

und die errorlevel-Abfrage sieht eigentlich immer so
01.
if %errorlevel%==0 goto ...
aus.

lg,
Slainte

/EDIT: Ah, bastla war mal wieder schneller (und ausführlicher)
Bitte warten ..
Mitglied: Biber
10.02.2012 um 15:00 Uhr
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
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
[Edit2]
Bitte warten ..
Mitglied: bastla
10.02.2012 um 15:00 Uhr
@SlainteMhath
Es gäbe zwar auch noch die Variante
if errorlevel 1 goto :wherever
(damit wird auf >=1 abgefragt und das funktioniert auch zB innerhalb einer "for"-Schleife), aber ich würde weder noch (siehe oben) verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
10.02.2012 um 15:01 Uhr
@Biber
... 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
Bitte warten ..
Mitglied: OKIDOKI
10.02.2012 um 20:44 Uhr
hey,

mal kurz nicht am Rechner ...

Ich bin schon wieder sprachlos und dankbar!

Nach bastlas Hinweisen habe ich gleich meine ganzen andren errorlevels überprüf und dann verworfen. Außerdem habe ich mir SlainteMhath Hinweis mit den Sprungmarken noch einmal genauer durchgesehen: man muss echt höllisch aufpassen!
Auch Bibers Vorschlag, mit dem Vertauschen der Zeilen war für mich sehr wichtig. Hier hatte ich auch immer geschludert! Anmerkung: manchmal dachte ich, dass er die Sprungemarken dann irgendwie nicht findet. Das lag dann aber bestimmt nicht an der Reihenfolge der errorlevels, sondern vielmehr an an einer verkorksten batch...
Und schließlich möchte ich noch TimoBeil danken, der bracht mich erst auf die Idee mit dem assoc. Dazu gibt es auch so viele Fragen von Leuten, aber ohne Lösungen in anderen Foren. Nur hier wird einem wirklich - super - geholfen.

Vielen Dank euch allen,
OKIDOKI
(ich hoffe, dass auch anderen Usern solche Beiträge helfen!)
Bitte warten ..
Mitglied: 60730
10.02.2012 um 22:48 Uhr
moin,

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.
wäre da vielleicht doch der bessere Weg.

Gruß

PS: >nul 2>nul wirst du sicher auch noch brauchen können.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
Per Batch aktuell angemeldete User auslesen (1)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...