2014-11-07 6 views
0

폴더 묶음을 통해 2 개의 프로그램을 실행하는 Windows 배치 스크립트를 작성하려고합니다. 저는 쉘 스크립팅 전문가는 아니지만 최선을 다합니다.하위 폴더에서 프로그램 실행

는 여기에 내가 프로그램 1에 대한

입력 그때 그때 필요한 생성이 program2을 통해 실행되는 .extension2 파일을 생성하는 .extension1 파일입니다 ... 각 폴더를 통해 실행하기 위해 노력하고있어거야.

스크립트를 실행하기 전에 폴더로 이동하십시오. 프로그램은 현재 작업 디렉토리에서만 작동하기 때문에 폴더에 복사됩니다.

copy C:\program1 . 
copy C:\program2 . 
for %i in (*.extension1) do program1 "%i"  
for %i in (*.extension2) do program2 "%i" 

는 위에 표시된 데이터 폴더 내가에서 프로그램을 실행하는 데 필요한 폴더의 수백을 포함합니다. 나는 하나의 큰 배치 스크립트에서이 작업을 수행 할 수 있도록하고 싶습니다.

답변

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir\one" 
PUSHD "%sourcedir%" 
FOR /r %%a IN (*.ext1) DO (
PUSHD "%%~dpa" 
ECHO(c:\program1 "%%~nxa" 
popd 
) 
popd 
GOTO :EOF 

상황에 맞게 sourcedir 설정을 변경해야합니다.

이 모든 것이 사용자가 필요로하는 것이거나 최소한 프레임 워크입니다.

루틴은 단순히 ECHO 필요한 명령에 유의하십시오. 이렇게하면 (대표 하위 트리에서) 무해한 테스트를 통해 프로세스가 전체 트리에서 작동하는지 확인할 수 있습니다.

하위 트리의 각 .ext1 파일의 첫 번째 프로그램을 실행해야 ECHO(c:\program1c:\program1에 변경. 프로그램이 실행 파일과 같은 디렉토리에 파일이 존재하는지 검사하는 것은 드문 경우입니다. 경로를 지정하지 않으면 "현재 디렉토리"로 간주됩니다.

프로그램 program1whatever.ext2이라는 파일을 whatever.ext1에서 생성하는지 또는 somethingradicallydifferent.ext2을 생성하는지 여부를 말하지 않습니다. 모든 경우에 동일한 이름이 사용됩니다. 이런 경우

다음 ext2

ext1을 변경,

ECHO(c:\program1 "%%~nxa" 


ECHO(c:\program2 "%%~na.ext2" 

그렇지는, 단순히 전체 블록을 반복 한 후 간단하게 추가, 두 번째 프로그램을 실행하려면

(내 약자를 축약 한 것으로 알 수 있습니다)

,451,515,

프로그램 (들)이 같은 디렉토리에 있어야 오프 기회에, 다음 (분명히, 프로그램 2 및 저두)

echo n|C:\program1 . >nul 2>nul 
ECHO(program1 "%%~nxa" 

ECHO(c:\program1 "%%~nxa" 

를 교체합니다. 여기에서 ncopyecho을 입력하므로 copy은 한 번만 발생합니다. 이것은 개선 될 수 있지만 아마 99의 이후 이론적 인 요구 사항 일 것입니다.9999 %가 c:\program?을 실행하면 매우 행복하게 작동합니다.

관련 문제