2012-05-21 4 views
6

Windows 용 배치 파일을 작성하고 7z (7-Zip) 명령을 사용합니다. 나는 그것의 위치를 ​​PATH에 두었습니다. 명령을 사용할 수 있는지 여부를 확인하는 비교적 쉬운 방법이 있습니까?명령이 배치 파일로 제공되는지 확인하십시오

+0

실행하지 마십시오. 가장 좋은 방법은 IMO 일 것입니다 : http://stackoverflow.com/a/27014081/1724702 –

답변

1

명령을 찾을 수없는 경우 7z.exe을 실행하면 %errorlevel%이 9009를 반환합니다. 그것을 확인할 수 있습니다.

7z.exe 
if %errorlevel%==9009 echo Command Not Found 
+0

더 좋은 방법은'7z.exe> ​​nul 2> & 1 | echo command not found'라고 생각합니다. – Joey

+0

IMO가 가장 좋은 방법은 다음과 같습니다. http://stackoverflow.com/a/27014081/1724702 –

-1

예, 명령 창을 열고 "7z"(실행 파일의 이름이라고 가정)를 입력하십시오. 명령 또는 작업이 인식되지 않는다는 오류가 발생하면 경로 명령문에 어딘가에 문제가 있다는 것을 알게됩니다. 그렇지 않으면 그렇지 않습니다.

1

그래,

@echo off 
set found= 
set program=7z.exe 
for %%i in (%path%) do if exist %%i\%program% set found=%%i 
echo "%found%" 
+0

공백이있는 인용 된 경로에는 사용할 수 없습니다. – Joey

+0

고마워, 왜'set found ='라고 할 수 있니? – rynd

+0

@Joey 쉽게 해결할 수 있습니다. 큰 따옴표를 사용하십시오. 그러나 허용 된 솔루션이 수행되는 동안 명령 확장 (exe, bat)이 지정되지 않은 경우에는 작동하지 않습니다. – khattam

16

나는은 (PATH 환경 변수에 사용할 수, 말)를 사용할 수 있는지 여부를 확인하기 위해 명령을 실행하는 것을 권장하지 않습니다. 그래서 가장 좋은 방법은 where 명령을 사용하는 것입니다 생각 :

where 7z.exe >nul 2>nul 
if %errorlevel%==1 (
    @echo 7z.exe not found in path. 
    [do something about it] 
) 

>nul2>nul은 선택을; where 명령으로 생성 된 표준 출력 및 표준 오류 출력을 방지하기 위해 여기에 사용됩니다.

업데이트 : 당신이 실행하지 않을 수 있습니다 이유 :

  1. 당신은 정말 프로그램이 무엇을하는지 모르는하지 않을 수 있습니다
  2. 부작용이있을 수있는 프로그램 - 뭔가를 할 수있는 그 당신은 알고 있지만 싶지 않아 -이 프로그램은 자원이 될 수있는 등
  3. , 같은 삭제 파일로 캐시를 다시/집중 느린

문제는 프로그램을 사용할 수 있는지 여부를 결정하는 것이므로 같은 것을 확인해야합니다.

+1

'IF'조건에 내기 : 'IF NOT ERRORLEVEL 0'. ['IF'] (http://ss64.com/nt/if.html)를보십시오. – jpmc26

+1

왜 실행하지 않는 것이 좋을까요? 일반적으로 또는이 특별한 경우입니까? – quimnuss

+2

실행하지 않는 이유 : 부작용, 프로그램이 무엇인지, 프로그램이 리소스 집약적 인/느린가 등을 알지 못할 수도 있음 –

관련 문제