SystemInfo - computer-System Modell über den CMD - Extra-Leerzeichen bug
Ich versuche, einen Computer-System Modell Typ per Batch-Datei.
für diese habe ich dieses Skript:
systeminfo | find "System Model" > %temp%\TEMPSYSINFO.txt
for /F "tokens=2 delims=:" %%a in (%temp%\TEMPSYSINFO.txt) do set SYSMODEL=%%a
del %temp%\TEMPSYSINFO.txt
set SYSMODEL=%SYSMODEL:~1%
echo %SYSMODEL% >%temp%\SYSMODEL.txt
del %temp%\SYSMODEL.txt
set "Line1=*** System Model: %SYSMODEL%"
echo %Line1%
aber wenn ich es bekomme ich zusätzliche Leerzeichen:
*** System Model: OptiPlex 9010
Irgendeine Idee, wie kann ich es beheben?
- Willkommen bei S. O. Eliran! Da bist du neu hier, es ist vielleicht nicht eine schlechte Idee zu überprüfen, out diesem post in Bezug auf mark, wie eine Antwort als akzeptiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du machst es auf die harte Weise. Verwenden
wmic
. Es ist viel schneller und weniger kompliziert zu kratzen.wmic
ermöglicht die Abfrage alle Arten von ordentlich wmi-Müll.wmic /?
für mehr info.(aktualisiert, pro OP ' s Kommentar unter Fuzzy-Taste Antwort)
Könnten Sie
Bedeutung Trennzeichen sind DOPPELPUNKT oder ein LEERZEICHEN, wenn der text token3 ABER wie der text könnte? include-Doppelpunkt oder Leerzeichen, die
*
bedeutet 'den rest der Zeile nach dem Trennzeichen nach token 2
%%athe first-mentioned token (2) is the one that gets assigned to
, the next highest (*) to
%%b`Nun konnte man auch code
was bedeutet, dass Sie nicht brauchen, die TEMPSYSINFO.txt Datei. Dies führt die single-quoted Befehlszeile - die Sonderzeichen
>
und|
brauchen ein caret-Zeichen (^
) zu 'entkommen' Sie (schalten Sie Ihre Besondere Bedeutung) soweit das FÜR die betroffen ist (Sie gehören zu denquoted command
, nicht die FÜR.)Den 2>nul unterdrückt die SYSTEMINFO Fortschritte text.
Und es ist durchaus legitim, diese zu brechen-Linie - müssen nur vorsichtig sein, gerade dort, wo Sie es tun. Macht den code lesbarer zu gestalten.
Für was es Wert ist, ich versuchte dies und es ersetzt alle doppelten Leerzeichen durch nichts,
mit
echo =%SYSMODEL%=
Herstellung :=my sysmodel =
(nur ein Leerzeichen) 🙂set SYSMODEL=%SYSMODEL: =%
BEARBEITEN
Also, mit Peter ' s ausgezeichneten Vorschlag, um die weitergeleiteten Befehle in die
FOR /F
, die ich habe versucht, vor, aber kamen Leim mit einem einfachen|
statt^|
🙂EDIT 2
rojo, die Antwort ist toll, aber es lässt immer noch Leerzeichen Folgen für mich, so landete ich immer noch mit der
%var: =%
trick