vidcrafter
Goto Top

Model mit hilfe vom CMD in eine Variable speichern

Hallo,

ich will das Model eines Rechners auslesen und anschließend in eine Variable speichern.(%Model%)
Mit [wmic computersystem get model | findstr /v "Model"] kriege ich das Model meines Rechners raus.
Gut aber jetzt fehlt nur noch das abspeicher in eine Variable.
Das versuche ich mit [for /f "tokens=*" %g in ('wmic computersystem get model ^| findstr /v "Model"') do set Model=%g]
Ausgabe: set Model="Modelname"
set Model=

Wie man sehen kann wird erst der Modelname in die Variable Model geschrieben und anschließend wird die Variable mit einem
Leerzeichen überschrieben.

An dieser Stelle benötige ich Hilfe.
Vielleicht wisst ihr weiter, wie man das Model in eine Variable Speicher kann.
Ich bin für jede Hilfe dankbar.

Ps.: Der Code soll in der CMD bleiben, das heißt es soll keine Text Datei oder ein Ordner erstellt werden mit dem Inhalt zu
Übertragung des Inhaltes und ähnliches. Außerdem sollte er kurz gehalten werden.

Content-Key: 363571

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

Printed on: April 25, 2024 at 20:04 o'clock

Member: rubberman
Solution rubberman Feb 04, 2018 updated at 22:45:35 (UTC)
Goto Top
WMIC gibt am Ende jeder Zeile ein zusätzliches Carriage Return Zeichen aus. Dieser Bug ist so alt wie WMIC selbst. Eine zusätzliche FOR /F Schleife eliminiert dieses Zeichen.
@echo off &setlocal
for /f "delims=" %%i in ('wmic computersystem get model /value') do for /f "delims=" %%j in ("%%i") do set "%%j"  
echo %model%
pause
Bei Nutzung in der Kommandozeile sind es nur einfache Prozentzeichen bei den FOR Variablen ...

Steffen
Member: Vidcrafter
Vidcrafter Feb 04, 2018 at 22:45:13 (UTC)
Goto Top
Danke für deine Hilfe,
aber wenn ich deinen Befehl in´s CMD Fenster eingebe bekomme ich eine die Fehlermeldung:
"%%i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Member: rubberman
Solution rubberman Feb 04, 2018 at 22:47:19 (UTC)
Goto Top
Ja, hatte oben noch eine Bemerkung ergänzt, obwohl ich das eigentlich als selbstverständlich vorausgesetzt habe.

Steffen
Member: Vidcrafter
Vidcrafter Feb 04, 2018 at 22:53:16 (UTC)
Goto Top
Okey danke habe jetzt alle Variablen(%%i & %%j ) durch %g ersetzt und es funktioniert vielen dank.
Aber könntest du mir trotzdem erklären was %%i und %%j bedeuten?
Ps.: Ich bin noch ein Anfänger in dem Bereich.
Member: rubberman
Solution rubberman Feb 04, 2018 at 23:01:29 (UTC)
Goto Top
Eine FOR Variable besteht aus einem Prozentzeichen und einem Buchstabe. In einem Batchscript muss das Prozentzeichen verdoppelt werden, da es beim Parsen des Scripts wieder zu einem reduziert wird. Es ist übrigens nicht ratsam in einer verschachtelten FOR Schleife beide Variablen gleich zu benennen. Genau genommen wundert es mich dass es überhaupt funktioniert. Ob du nun aber %g und %h, oder wie ich %i und %j verwendest, ist grundsätzlich egal. Wenn du die Ausgabe im Prompt noch etwas übersichtlicher halten willst, verwende ein @ nach jedem DO, à la
for /f "delims=" %i in ('wmic computersystem get model /value') do @for /f "delims=" %j in ("%i") do @set "%j"  
Steffen
Member: Vidcrafter
Vidcrafter Feb 04, 2018 at 23:04:17 (UTC)
Goto Top
Ach so vielen Dank dafür!
Du hast mir echt weiter geholfen :D