2011-11-17 6 views
1

배치 파일에서 명령 출력을 가져 와서 변수에 저장하려고합니다.명령 출력을 변수로 저장

내 명령의 목표는 특정 폴더의 폴더 수를 계산하는 것입니다. 나는 현재 디렉토리에 도착 cd path\to\my\folder을 수행해야하기 때문에

  • 나는 this 허용 대답에서 제공하는 트릭을 사용할 수 없습니다. 아쉽게도 path\to\my\folder은 실제로 UNC 경로 (\\path\to\my\folder)이고 Windows cmd는 cd \\some\UNC\path을 지원하지 않기 때문에이 명령을 수행 할 수 없습니다.
  • 나는 this 대답을 알고 있지만 임시 파일을 사용하고 싶지 않습니다.

그래서 나는 다음을 수행하려고 :

  • 폴더의 수를 구하려면를, 내가 사용

    dir \\path\to\my\folder | find /c "<REP>" 
    

    이 잘 작동하고 내가 기대하는 것처럼 나에게 수를 반환 .

  • 일괄 변수에이 명령의 출력을 검색하려면, 나는 시도 :

    FOR /F "TOKENS=*" %%i IN ('\\path\to\my\folder | find /c "<REP>"') DO 
    SET value = %%i 
    

    하지만 성공하지 않고 오류 메시지가있는 ...

    | 의외였다.

    ... 내가 배치 파일을 실행 ...

    %% 내가 예상치 못한이었다.

    명령 창에서 직접 명령을 실행하려고하면. 나는 <REP> 문자열 (...find /c ""<REP>""') DO...) 주위의 따옴표를 벗어나려고했지만 나에게도 같은 오류가 발생했습니다.

변수의 출력을 검색하는 올바른 경로에 있습니까? 이 오류 메시지를 해결하려면 어떻게해야합니까?
또는 변수에 명령 출력을 설정하는 더 간단한 방법이 있습니까?

+2

을 : 본질적으로 그래서

은', 2)'%% i'입니다 | : | ^'1)''같은 그 상황에서 탈출한다 배치 파일에서만 사용되며,'% i'는 명령 프롬프트에서 직접 사용하기위한 것입니다. –

+1

가능한 [Capture output command CMD] 복제본 (http://stackoverflow.com/questions/14646575/capture-output-command-cmd) – aschipfl

답변

4

먼저 대답 한 답변을 사용할 수 있습니다. cd은 없지만 popd을 실행할 때 해제 될 UNC 경로에 대한 임시 드라이브 문자를 할당하는 pushd을 사용할 수 있습니다. 당신이 발견 한 문제를 해결

pushd \\server\path 
set count=0 
for /d %%x in (*) do set /a count+=1 
popd 
관련 문제