2016-10-13 5 views
2

기본적으로 Windows에서이 줄을 구현하려고합니다. 일괄 처리 : cp */win/lib/*.dll ./bin. 리눅스는 이런 친절한 와일드 카드를 사용하기에 충분할 정도로 친절하지만, Windows는 그 중 어떤 것도 사용하지 않을 것입니다. 그 일을하는 가장 좋은 방법은 무엇입니까? for 루프는 조금 과장된 것처럼 보입니다. 그러나 어느 누구도 copy, xcopy, robocopy 중 어느 쪽도 멋진 작업을 구현하지 못하는 것 같습니다.일괄로 Linux 와일드 카드를 사용하여 작업하십시오.

미리 감사드립니다.

EDIT : 컨텍스트에 대해 mingw32-make의 Makefile을 작성 중이며 많은 종속 파일을 실행 파일의 폴더에 복사하려고합니다.

+0

'배치'와 '배쉬'를 실제로 비교할 수 없습니다. PowerShell 대신 MS-Windows를 기반으로 한 다소 합리적인 셸을 살펴보고 싶을 것입니다. – arkascha

+0

그 (것)들 비교에서, 나는 나가 주었다 것과 동일한 효력이있는 명령의 세트를 찾아내는 것을 시도하고있다. 나는 그것이 mingw32가 사용하는 것 (물론 mingw32-w64)을 사용하기 때문에 Batch를 고수하고있다. 그래서 PowerShell은 실제로 옵션이 아니다. – Matrefeytontias

+0

오 잘. 기록을 위해이 줄은 PowerShell에서 작동합니다. 이제 mingw32-make에서 PowerShell을 사용할 수 있기를 바랍니다. – Matrefeytontias

답변

0

FOR 루프가 과도 같은 느낌 수도 있지만, 우리가 여기 배치에 대해 얘기, 왜 단순히 모든에서 당신이 원하는 것을 할 수있는 방법이 있다는 것을 행복하고 ... :) 나는 다른 알고 이 작업을 수행 할 수있는 가능성 (외부 도구 사용 제외). 디렉토리 마스크의 백 슬래시는 라인 4에서 행해지는 FINDSTR의 정규 표현식에서 두 배로해야합니다. 부정 문자 클래스의 캐럿 ^은 두 번 해석되므로 두 번 이스케이프 처리해야합니다.

편집 : 보정 *\win\lib의 하위 디렉토리에 .dll의 포함되지합니다.

@ECHO OFF 
SET dirmask=\win\lib 
SET extension=.dll 
SET regex=%dirmask:\=\\%\\[^^^^\\]*\%extension%$ 
FOR /F "tokens=*" %%G IN ('DIR /S /B ^| FINDSTR /R "%regex%"') DO COPY %%G .\bin 
+1

와우 하하, 고마워. 나는 혼자서 그걸 생각할 수 없었을 것이다. 이제 MinGW를 심각하게 고려하고 Cygwin으로 가겠다. P는 내 Makefile이 단지 감사 할 것 같았다. – Matrefeytontias