![& 이때는 예상치 못한 일이었습니다](https://rvso.com/image/1497097/%26%20%EC%9D%B4%EB%95%8C%EB%8A%94%20%EC%98%88%EC%83%81%EC%B9%98%20%EB%AA%BB%ED%95%9C%20%EC%9D%BC%EC%9D%B4%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
처음에 일부 변수를 설정해야 하는 배치 파일이 있습니다.
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
. 나는 그것이 %
after 와 관련이 있을 것이라고 생각하고 있지만 .NET
거기에 있어야 합니다. 그렇지 않으면 wmi 쿼리가 필요한 값을 반환하지 않습니다.
답변1
'이번에는 예상치 못한 일이었습니다.' 오류
배치 파일에 두 가지 실수가 있습니다.
실수 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"
위 명령에는 )
before 가 누락되었습니다 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 매개변수에 대해 특별한 의미를 갖습니다.백분율을 일반 문자로 처리하려면 두 배로 사용하십시오.
%%
원천통사론
추가 자료
- Windows CMD 명령줄의 AZ 인덱스- Windows cmd 라인과 관련된 모든 것에 대한 훌륭한 참고 자료입니다.
- 통사론- 이스케이프 문자, 구분 기호 및 따옴표.
- wmic- Windows 관리 계측 명령.