2014-12-22 1 views
0

소프트웨어 버전을 구하기 위해 명령 줄에서 실행할 수있는 스크립트가 있습니다. 그것은 명령 행에서 완벽하게 작동합니다. 나는 getversion "<full path>"에 이것을 타이핑하고 내가 필요한 것을 정확히 얻는다.배치 스크립트에 다른 스크립트의 위치를 ​​알려주는 방법은 무엇입니까?

이제 getline.bat 및 vbscript 파일을 모두 명령 줄에서 사용하는 디렉터리에 두어야한다는 것이 잡혀 있습니다. 이것은 아마도 멍청한 질문이지만, 배치 스크립트에이 버전을 추가하려면 버전을 변수로 설정하고 어떻게해야합니까?

지금 나는 그것이 문제는 배치 파일 getversion.bat 또는 해당 스크립트에서 참조하는 VBScript를 찾을 위치를 모르는 것 같다이

@echo off 
set version=getversion "<full path>" 
echo %version% 
pause>nul 

처럼 보이는했다. 어떻게 그들이 배치 파일을 말할 수 있습니까?

+0

사용'/f'가 다른 스크립트 또는 프로그램을 시작하고 그 출력을 변수에 캡쳐합니다. 'for/f "delims ="%% I in ('getversion "전체 경로" ') do set "version = %% I"' – rojo

+0

폴더에서이 모든 항목을 실행하는 방법은 무엇입니까? 서버? UNC 경로가 지원되지 않습니다.라는 메시지가 계속 나타납니다. – David

+0

'pushd \\ servername \ path \ to \ file \'그리고 나서''local \ path \ to \ getversion filename.ext'' 그리고 완료되면''popd '. – rojo

답변

0

이 작업을 수행하는 한 가지 방법은 함수의 출력을 파일로 보내고이 출력을 SET /P 명령을 사용하여 로컬 변수로 다시 읽는 것입니다. 이것은을 수행해야합니다

SET TempFile="%Temp%\%RANDOM%.txt" 

REM Direct output to a temp file. 
CALL getversion "<full path>">%TempFile% 

REM Read the output written to the temp file into a local variable. 
SET /P Version=<%TempFile% 

ECHO %Version% 

REM Cleanup. 
IF EXIST %TempFile% DEL %TempFile% 

다른 방법 (이 방법으로 많은 "청소기"), 당신은 당신의 기능을 실행하고 지역 변수에 출력을 저장하는 FOR 명령을 사용할 수 있습니다

FOR /F "usebackq tokens=* delims=" %%A IN (`CALL getversion "<full path>"`) DO SET Version=%%A 
ECHO %Version% 
+0

서버의 폴더에서이 모든 것을 실행한다는 사실을 어떻게 해결할 수 있습니까? 'UNC 경로가 지원되지 않습니다. '라는 메시지가 계속 나타납니다. – David

+0

@David -이 줄은 무엇입니까? –

+0

cmd.exe에서 가장 먼저 나타납니다. 이 스크립트는 모두 외부 서버에서 실행해야합니다. 그래서'CMD.EXE가 위의 경로로 현재 디렉토리로 시작되었습니다. UNC 경로는 지원되지 않습니다. Defaulting to Windows directory'와 getversion.bat가 인식되지 않기 때문에 – David

관련 문제