Mingw32/Msys가 인수를 망치지 않고 dos/cmd.exe 실행 파일을 실행할 수 있습니까?

Mingw32/Msys가 인수를 망치지 않고 dos/cmd.exe 실행 파일을 실행할 수 있습니까?

Windows bash 프롬프트에서 grindlnotify.exe를 실행하려고 합니다. mingw32용으로 다시 컴파일하는 것은 나에게 좋은 선택이 아닙니다.

Growlnotify는 cmd 프롬프트에서 사용하면 작동하지만 bash 프롬프트에서는 (대부분) 실패합니다. 스위치(알림 메시지) 없이 인수 하나만 취할 수 있는 것 같습니다. 인수가 두 개 이상 있으면 자동으로 실패합니다. 스위치가 하나만 있고 다른 인수가 없으면 해당 스위치가 메시지로 전송됩니다.

나는 Windows가 실제 tty를 제공하지 않지만 수정 사항은 제공하지 않는 방식과 관련이 있다는 힌트를 Google에서 찾아냈습니다. 이것이 작동하도록 강제하는 영리한 방법이 있습니까? 예상대로 작동하도록 인수를 올바르게 이스케이프 처리하는 방법은 무엇입니까?

새로운 정보:

세 배의 슬래시를 사용하여 실행하면 인수가 무시됩니다. 반면에 DOS에서 올바른 형식으로 실행하면 자동으로 실패합니다.

실패(/를 사용하는 경우에도 실패함):

growlnotify /a:'Application Name' /n:'Notification Type' 'message goes here'

하지만 이것은:

growlnotify ///a:'Application Name' ///n:'Notification Type' 'message goes here'

이는 '여기에 메시지가 표시됩니다'라는 알림을 보낼 것이지만 처음 두 인수를 포함하는 데 신경 쓰지 않은 것처럼 보입니다. 단일 또는 이중 슬래시는 알림을 보내지 않습니다(인수를 전혀 포함하지 않은 것처럼).

4중 슬래시와 5중 슬래시는 삼중 슬래시와 동일하게 동작합니다.

다양한 스위치에 대한 설명.

답변1

좋아, 정답은 다음과 같습니다.

dos 실행 파일을 사용할 수 있도록 인수를 이스케이프하려면 다음과 같이 슬래시를 두 배로 늘립니다.

growlnotify //a:Application //t:Title "message here"

그것이 실패할 이유는 어떻게든 전날 시작할 때와 동일한 응용 프로그램 이름을 사용하지 않았기 때문입니다(그리고 다른 응용 프로그램으로서 등록이 취소되었으며 Windows용 Growl은 등록되지 않은 알림을 무시합니다).

언급할 가치가 있는 몇 가지 다른 트릭이 있습니다. CMD에서는 다음과 같은 명령문을 발행할 수 있습니다.

growlnotify //a:App //t:"With Spaces" "message here"

"공백 포함" 폭탄. 내 생각에 msys/bash는 따옴표를 확장한 다음 실행 파일이 두 개의 인수를 볼 수 있도록 전달할 수 있습니다.//t:와 함께그리고공백". 이를 수행하는 올바른 방법은 다음과 같습니다.

growlnotify //a:App //t:With\ Spaces "message here"

또한 파일 경로를 전달하는 경우 슬래시를 의미하는 DOS 스타일을 계속 사용하고 싶을 것입니다(궁극적으로 이를 사용하는 DOS와 유사한 실행 파일이기 때문입니다). 그러나 이는 탈출로 해석되므로 두 배로 늘려야 함을 의미합니다.

growlnotify //a:App //ai:C:\\path\\to\\icon.png "message here"

이것이 미래에 누군가에게 도움이 되기를 바랍니다.

답변2

MinGW에서 "cmd.exe /crowlnotify.exe ..."를 실행해 보셨나요?

관련 정보