1

У меня есть командный файл, который должен установить некоторые переменные в начале.

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%

Если я запускаю их в приглашении CMD (заменив %% A на% A и т.д.), Они работают как положено, но когда я запускаю командный файл, первая строка запускается, как ожидалось, а затем я получаю & was unexpected at this time ошибка , Я думаю, что это может быть связано с % после .NET , но он должен быть там, иначе запрос wmi не вернет мне нужное значение.

1 ответ1

0

ошибка "& было неожиданно в это время"

В вашем командном файле есть две ошибки.

Ошибка 1:

for /f "skip=1 tokens=4" %%B in ('wmic product where "name like 'Microsoft .NET%'" get name') do set "DNVER=%%B"

Приведенная выше команда должна иметь один % после выхода из NET . Вместо этого используйте %% :

for /f "skip=1 tokens=4" %%B in ('wmic product where "name like 'Microsoft .NET%%'" get name') do set "DNVER=%%B"

Ошибка 2:

for /f "tokens=3" %%C in ('reg query "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v svcVersion' do set "IEFULLVER=%%C"

Приведенная выше команда отсутствует а ) перед do . Так должно быть:

for /f "tokens=3" %%C in ('reg query "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v svcVersion') do set "IEFULLVER=%%C"

Рабочий пакетный файл (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

Пример вывода:

F:\test>test
64-bit
4.5.2
11.0.9600.17691

Уходящие проценты

Символ % имеет особое значение для параметров командной строки и параметров FOR.

Чтобы рассматривать процент как обычный символ, удвойте его:

%%

Исходный синтаксис


Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .