문제

Windows에서 스크립트/명령의 출력을 다른 스크립트의 인수로 어떻게 사용할 수 있습니까?(파이프 |는 다른 스크립트가 표준 입력에서 읽지 않기 때문에 여기서는 작동하지 않습니다)

너무 명확하게 설명:인수 인수가 필요한 AnotherScript가 있습니다. 예:

AnotherScript 12

이제 인수(예제에서는 12)가 스크립트 출력에서 ​​나오도록 하고 이를 ScriptB라고 부릅니다.그래서 나는 다음과 같은 내용을 원합니다.

AnotherScript (ScriptB)

AnotherScript는 실제로 인수가 필요한 Python 스크립트이고 ScriptB는 숫자를 생성하는 cygwin bash 스크립트이므로 사용 방법은 다음과 같습니다.

c:\Python26\python.exe AnotherScript (c:\cygwin|bin|bash --login -i ./ScriptB)

답변해주셔서 감사합니다.그러나 힘든 'for' 구성이 필요하다는 점을 고려하여 표준 입력에서 읽을 수 있도록 AnotherScript를 다시 작성했습니다.그게 더 나은 해결책인 것 같습니다.

도움이 되었습니까?

해결책

메모:이 모든 작업에는 명령이 배치 파일에 있어야 합니다.따라서 이중 % 표지판.

당신은 사용할 수 있습니다 for 명령의 출력을 캡처하는 명령:

for /f "usebackq delims=" %%x in (`ScriptB`) do set args=%%x

그런 다음 해당 출력을 다른 명령에서 사용할 수 있습니다.

AnotherScript %args%

이로 인해 %args% 마지막 줄을 포함하려면 ScriptB하지만 의 출력.한 줄만 반환하는 경우 이를 한 줄로 묶을 수 있습니다.

for /f "usebackq delims=" %%x in (`ScriptB`) do AnotherScript %%x

배치 파일 외부에서 사용할 때는 다음을 사용해야 합니다. %x 대신에 %%x.

그러나 만일 ScriptB 두 줄 이상을 반환합니다. AnotherScript 각 라인마다 실행됩니다.첫 번째 루프 반복 후 중단하여 배치 파일 내에서만 이를 피할 수 있습니다.

for /f "usebackq delims=" %%x in (`ScriptB`) do AnotherScript %%x & goto :eof

다른 팁

원하는 경우 첫 번째 스크립트의 출력을 환경 변수에 저장하고 해당 내용을 두 번째 스크립트의 명령줄 매개변수로 사용할 수 있습니다.

이 같은:

for /f "delims=" %a in ('first_script.cmd') do @set ouput=%a
second_script %ouput%

데이터를 임시 파일에 저장하시겠습니까?

또는 표준 입력 및 출력에 파이프 대신 명명된 파이프를 사용합니다.

또는 첫 번째 스크립트에서 다른 스크립트를 호출하고 명령 인수를 통해 데이터를 전송합니다.

필요 이상으로 일을 복잡하게 만들고 있지 않습니까?

Bash에서 AnotherScript를 호출합니다.필요한 경우 이를 수행할 수 있도록 Cygwin을 설치하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top