Batch-Datei: Die Ausgabe von IF- und ELSE-Anweisungen wird innerhalb des Menüskripts umgekehrt

629
cgitech

DAS PROBLEM : Wenn die If (goto) -Anweisung "Microsoft Windows 7 Professional" entspricht, wird die else-Anweisung und nicht die if-Anweisung verwendet. Wenn die erste goto-Anweisung ausgewählt ist, wird die zweite goto-Anweisung ausgeführt.

for /f "skip=1 delims=" %%x in ('wmic /Node: "pc-%cn%" os get caption') do @echo.%%x if "%%x"=="Microsoft Windows 7 Professional" (goto seven) else (goto ten) 

Ich führe dies auf entfernten Computern aus (dabei die / Node-Inklusion).

Hier ist die gesamte Batch-Datei:

@ECHO OFF   :: +++++++++++++++++ ENTER PC +++++++++++++++++++ cls echo. echo PC Tasks echo -------- echo. set /p "cn=Enter Computer Name Extension: "   :: +++++++++++++++++++ MENU +++++++++++++++++++++ :begin cls echo. echo 1) OS Build Version echo 2) Exit echo. goto option  :option set /p op=Type option #: if "%op%"=="1" goto test if "%op%"=="2" goto exit   :: ++++++++++++++++++++ OPTIONS ++++++++++++++++++++++  :test :: Check for OS for /f "skip=1 delims=" %%x in ('wmic /Node: "pc-%cn%" os get caption') do @echo.%%x if "%%x"=="Microsoft Windows 7 Professional" (goto seven) else (goto ten)  echo. pause goto option  :seven :: Windows 7 Build Version systeminfo /s pc-%cn% | findstr /B /C:"OS Name" /C:"OS Version" echo. goto option  :ten :: Windows 10 Build Version psexec \\pc-%cn% cmd.exe /c Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId echo. goto option  :exit @exit 

Vielen Dank an alle, die helfen können.

2
Versuchen Sie, das if else auf mehrere Zeilen aufzuteilen. Siehe [If - Befehl bedingt ausführen - Windows CMD - SS64.com] (https://ss64.com/nt/if.html). DavidPostill vor 5 Jahren 0
** DavidPostill ** Vielen Dank für diese Website. Es ist eine großartige Ressource. Die Aufteilung des If-Falls auf mehrere Zeilen hat jedoch nicht funktioniert. cgitech vor 5 Jahren 0
** DavidPostill ** Nochmals vielen Dank. Ihre Antwort brachte mich näher an die vollständige Lösung ... "das Wenn sonst über mehrere Zeilen aufteilen". Dies war der erste Teil. Der andere Teil war, was Namelessone erfunden hatte, um die Anführungszeichen von Microsoft Windows 7 Professional zu entfernen. Danke noch einmal. cgitech vor 5 Jahren 0

1 Antwort auf die Frage

2
NamelessOne

Es scheint mit der folgenden Syntax zu arbeiten. Ich habe die Anführungszeichen um Microsoft Windows 7 Professional entfernt. Und teilen Sie IF / ELSE zusätzlich auf mehrere Zeilen auf.

if "%%x"==Microsoft Windows 7 Professional ( goto seven ) else ( goto ten )  
** Namelessone ** Vielen Dank. Das hat perfekt funktioniert cgitech vor 5 Jahren 0