2012-06-21 2 views
0

Windows 명령 줄 스크립트를 사용하고 있습니다. 내가하고 싶은 것은 다른 명령 "B"가 출력으로 생성 한 명령 "A"를 실행하는 것입니다. 명령을 실행하기 전에 명령이 존재하는지 먼저 확인해야 할 수도 있습니다. 여기있는 사람이 어떻게하는지 압니까? 미리 감사드립니다.cmd에서 다른 프로그램에 의해 생성 된 명령을 실행하는 방법은 무엇입니까?

+0

이 명령 줄 도움말 페이지 [Windows 명령] (http://ss64.com/nt/)을 사용하면'CALL '이 도움이 될 것입니다. –

답변

1
a.exe > tmp.cmd 
CALL tmp.cmd 
+0

당신이하고있는 일을 설명하면 나중에 검색 할 때 사람들이 그것을 이해할 수 있도록 훨씬 더 나은 대답이 될 것입니다. –

1

고전적인 접근 방식은 Eugen Rieck suggested 같은 스크립트 파일로 출력을 리디렉션하는 것입니다. 작업이 끝나면 temp 폴더에 쓰고 임시 스크립트를 삭제하면됩니다. 스크립트의 두 동시 인스턴스가 서로 간섭하지 않도록 임시 스크립트 이름에 임의의 숫자를 포함시킵니다.

@echo off 
setlocal 
set script="%temp%\temp%random%.bat" 
commandA >%script% 
call %script% 
del %script% 

당신의 명령은 결과물을 산출하지 못할 수도 있습니다. 빈 스크립트를 실행해도 오류가 발생하지 않습니다. 당신이 원하는 경우에, 당신은 스크립트가 다음으로 비어 있음을 감지 할 수 있습니다 :

for %%A in (%script%) do if %%~zA equ 0 echo The script is empty. 

스크립트는 여러 명령을 사용하여 구축 할 수 있습니다

commandA >%script% 
commandB >>%script% 
commandC >>%script% 

또는 더 효율적으로 :

>%script% (
    commandA 
    commandB 
    commandC 
) 

비 전형적인 접근법은 명령을 스크립트 파일 대신 변수에 저장 한 다음 확장 된 값을 매크로로 실행하는 것입니다. 매크로의 실행은 모든 메모리 기반이기 때문에 스크립트 실행보다 훨씬 빠릅니다. 그러나 작동하는 매크로를 성공적으로 구축하기위한 규칙은 스크립트를 작성하는 것보다 복잡합니다. 또한 매크로는 최대 8191 자 (바이트) - 일괄 처리 환경 변수의 최대 길이로 제한됩니다.

인수와 값을 허용하는 매크로를 만들 수도 있습니다!

DOSTips 사이트에서 배치 매크로를 사용하여 엄청난 작업을 수행했습니다. 여기에 당신이 그들을 밖으로 시도에 관심이 있다면 두 가지 중요한 참조는 다음과 같습니다

http://www.dostips.com/forum/viewtopic.php?p=7330 좋은 장소를 그 개념의 발전을 보여주고 시작하고, 주요 구성 요소

http://www.dostips.com/forum/viewtopic.php?p=11344의 많은 더와 최신의 그리고 최고의 인수

0

대부분의 경우에 작동합니다 간단한 방법으로 매크로에 대한 개선 된 구문은 다음과 같습니다

for /F "tokens=*" %%i in ('a.exe') do %%i 

또는

,
for /F "tokens=*" %%i in ('a.exe') do if "%%i" NEQ "" %%i 
관련 문제