Ich habe eine Batchdatei, die am Anfang einige Variablen setzen soll.
for /f %%A in ('wmic os get osarchitecture ^| find /i "bit"') do set "OSARCH=%%A"
for /f "skip=1 tokens=4" %%B in ('wmic product where "name like 'Microsoft .NET%'" get name') do set "DNVER=%%B"
for /f "tokens=3" %%C in ('reg query "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v svcVersion' do set "IEFULLVER=%%C"
set IEVER=%IEFULLVER:~0,4%
Wenn ich diese in der CMD-Eingabeaufforderung ausführe (indem ich %%A durch %A usw. ersetze), funktionieren sie wie erwartet, aber wenn ich die Batchdatei ausführe, wird die erste Zeile wie erwartet ausgeführt und dann erhalte ich einen Fehler. Ich denke, es könnte mit dem „after“ & was unexpected at this time
zu tun haben , aber es muss da sein, sonst gibt die WMI-Abfrage nicht den Wert zurück, den ich brauche.%
.NET
Antwort1
Fehler „& war zu diesem Zeitpunkt unerwartet“
Ihre Batchdatei enthält zwei Fehler.
Fehler 1:
for /f "skip=1 tokens=4" %%B in ('wmic product where "name like 'Microsoft .NET%'" get name') do set "DNVER=%%B"
Der obige Befehl muss mit einem einzelnen „ %
after“ NET
maskiert werden. Verwenden Sie %%
stattdessen:
for /f "skip=1 tokens=4" %%B in ('wmic product where "name like 'Microsoft .NET%%'" get name') do set "DNVER=%%B"
Fehler 2:
for /f "tokens=3" %%C in ('reg query "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v svcVersion' do set "IEFULLVER=%%C"
Im obigen Befehl fehlt ein )
Vorzeichen do
. Es sollte lauten:
for /f "tokens=3" %%C in ('reg query "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v svcVersion') do set "IEFULLVER=%%C"
Funktionierende Batchdatei (test.cmd):
@echo off
setlocal EnableDelayedExpansion
for /f %%A in ('wmic os get osarchitecture ^| find /i "bit"') do set "OSARCH=%%A"
for /f "skip=1 tokens=4" %%B in ('wmic product where "name like 'Microsoft .NET%%'" get name') do set "DNVER=%%B"
for /f "tokens=3" %%C in ('reg query "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v svcVersion') do set "IEFULLVER=%%C"
echo %OSARCH%
echo %DNVER%
echo %IEFULLVER%
endlocal
Beispielausgabe:
F:\test>test
64-bit
4.5.2
11.0.9600.17691
Prozentwerte entkommen
Das
%
Zeichen hat eine spezielle Bedeutung für Kommandozeilenparameter und FOR-Parameter.Um ein Prozentzeichen als normales Zeichen zu behandeln, verdoppeln Sie es:
%%
QuelleSyntax
Weitere Informationen
- Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
- Syntax- Escape-Zeichen, Trennzeichen und Anführungszeichen.
- wmic- Befehl der Windows-Verwaltungsinstrumentation.