나는 간단한 배치 파일을 쓰고 있어요 그리고 난 이것을 경우 진술서 좀 배치 파일에 대한 오류 "명령의 구문이 올바르지 않습니다"얻을 수있다 아래 :간단한 박쥐 파일 작성?
@echo off
set ARCH=%PROCESSOR_ARCHITECTURE%
if %ARCH% == 'x86'
(
)
또한
if %ARCH% EQU 'x86'
시도
if 문에 어떤 문제가 있습니까?
나는 간단한 배치 파일을 쓰고 있어요 그리고 난 이것을 경우 진술서 좀 배치 파일에 대한 오류 "명령의 구문이 올바르지 않습니다"얻을 수있다 아래 :간단한 박쥐 파일 작성?
@echo off
set ARCH=%PROCESSOR_ARCHITECTURE%
if %ARCH% == 'x86'
(
)
또한
if %ARCH% EQU 'x86'
시도
if 문에 어떤 문제가 있습니까?
는
@echo off
set ARCH=%PROCESSOR_ARCHITECTURE%
if %ARCH% == x86 (echo ok)
rem or %ARCH% EQU x86
시도하고 당신이 그것을에있는 동안, 왜 안 learn vbscript뿐만 아니라, 여기에 해당하는
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Wsharch = WshShell.Environment("SYSTEM")
arch=Wsharch.Item("PROCESSOR_ARCHITECTURE")
If arch = "x86" Then
WScript.Echo "PROCESSOR_ARCHITECTURE is x86"
End If
' if Instr(arch,"86") > 0 then
ETA의 :
는 사실 내가 확인하려면 아키텍처에 문자열 64가 포함되어있는 경우. 다음과 같은 문자가 사용됩니다.
if %ARCH% == '*64*' (echo ok)
어떻게하면됩니까?
이렇게하려면 파일 또는 명령 출력의 패턴을 검색하는 findstr
이라는 멋진 작은 도구를 사용하면됩니다. 그냥 파이프 findstr
에 변수의 값 :
echo %ARCH% | findstr 64
곳 (64)를 포함하는 출력의 모든 라인을 찾을 수 있습니다. 이 경우에는 한 줄 밖에 없지만 괜찮습니다. 무으로 (에러 메시지 등) 출력을 리디렉션
echo %ARCH% | findstr 64 > nul 2>&1
을 :
그러나 이것은 또한 화면에 출력 될 수 있으므로 아래로 그것을 변경 라인을 야기한다.
이제 findstr
은 문자열이 발견되었는지 여부에 따라 특수 값 (종료 코드 또는 오류 수준)을 설정합니다. 원래의 질문에
echo %ARCH% | findstr 64 > nul 2>&1
if errorlevel 1 (
echo 64 did NOT appear (error level greater 0 usually means failure)
) else (
echo 64 DID appear
)
:
여는 괄호 해야if
같은 줄에 발생 사실 64
출력에 출연 여부를 테스트하기 위해 그것을 사용할 수 있습니다 진술 문 자체 :
@echo off
set ARCH=%PROCESSOR_ARCHITECTURE%
if %ARCH% == x86 (
rem ...
)
작동하지 않습니다.
cmd
의 파서는 줄 단위입니다. 따라서 여러 줄에 걸쳐 있어야하는 것은 무엇이든주의해야합니다.
@echo off
set ARCH=%PROCESSOR_ARCHITECTURE%
if %ARCH% == x86^
(
rem ...
)
^
는 cmd
및 파서의 일환으로 다음 줄에 여는 괄호를 받아 있도록이 효과적으로 줄 연속 연산자의 사용에 이스케이프 문자는 다음과 같습니다 또 다른 옵션은 줄 바꿈을 탈출하는 것 현재 문장 (일반적으로 줄 바꿈으로 종료됩니다).
그렇습니다. cmd
에있는 모든 문자가 문자열 리터럴이기 때문에 비교에서 리터럴 문자열 값에 작은 따옴표를 사용하면 Carlos Gutiérrez으로 표시된 다른 문제가 발생할 수 있습니다. 그래서 당신은 실제로 환경 변수에 포함되어있는 것을
x86
의
'x86'
대신 리터럴 문자열과 비교 될 것이다.
이렇게했습니다. 감사. 실제로 아키텍처에 문자열 64가 들어 있는지 확인하고 싶습니다. % ARCH % == '* 64 *'(echo ok) if 어떻게 할 수 있습니까? – Sam
저는 배치 전문가가 아니므로 누군가 도와 드리길 바랍니다. 그러나 vbscript가 문자열, 정규 표현식 및 배열, 사전 등과 같은 더 나은 데이터 구조를 검색하는 것과 같이 더 쉽게 원하는 것을 수행한다는 것을 알고 있습니다. 관심이 있다면 대신 vbscript를 사용하는 방법을 배웁니다. – ghostdog74
이미 완료되었습니다 :-). 그래도 배열과 사전은 환경 변수가있는 배치 파일에서 자연스럽게 나옵니다. 그들은 일종의 잡동사니입니다. ;-) – Joey