& war zu diesem Zeitpunkt unerwartet

& war zu diesem Zeitpunkt unerwartet

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 timezu 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“ NETmaskiert 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.

verwandte Informationen