Windows“Open With”에 명령 줄 인수 전달


28

특정 바로 가기로 열리는 프로그램이 있지만 바로 가기가 매개 변수를 응용 프로그램으로 보내는 것 같습니다. 대상 디렉토리로 직접 이동하여 두 번 클릭하면 작동하지 않습니다. 그러나 명령 줄을 사용하고 특정 인수를 전달하면 응용 프로그램이 올바르게 열립니다.

응용 프로그램을 사용하여 특정 파일 형식을 열고 싶지만 응용 프로그램에 매개 변수가 있어야합니다. 그렇지 않으면 작동하지 않습니다. 이런 종류의 일을 할 수 있습니까?


어떤 버전의 Windows를 사용하고 있습니까?
iglvzx

저는 Windows 7을 사용하고 있습니다.
jtpereyda

1
이것은 더 나은 솔루션이 있습니다 superuser.com/questions/136133/...

답변:


20

@jtpereyda와 동일한 문제가 발생했으며 @bobbymcr의 솔루션도 저에게 효과적이지 않았습니다. 명령에 node.exe가 필요없이 node.js 스크립트에 모든 명령 줄 매개 변수를 전달하려고했습니다.

문제는 Open With대화 상자를 통해 프로그램을 확장명과 이미 연결 한 경우 파일 확장명 연결 대신 응용 프로그램 연결을 생성한다는 것입니다. 그리고 응용 프로그램 연결이 우선합니다.

레지스트리 편집이 마음에 들지 않으면 (Default)다음 경로에서 키를 수정할 수 있습니다 .

HKEY_CLASSES_ROOT\Applications\node.exe\shell\open\command

node.exe조정중인 응용 프로그램으로 교체해야합니다 .

또는 폴더에서 응용 프로그램 폴더를 HKEY_CLASSES_ROOT\Applications완전히 삭제하면 ftype연결이 시작됩니다.

%*나머지 지정되지 않은 명령 행 인수를 전달하거나 전혀 사용하지 않는 것을 사용해야 합니다. 그렇게 "%2" "%3" "%4" "%5"하면 명령 줄 인수를 지정하지 않으면 응용 프로그램에 5 개의 빈 문자열 매개 변수가 전달됩니다.

마지막으로, 수동으로 레지스트리를 수정하는 것이 좋지 않으면 Nirsoft-FileTypesManager- http ://www.nirsoft.net/utils/file_types_manager.html에서 프리웨어 도구를 사용할 수 있습니다

파일 연결은 첫 번째 확장자 열에 텍스트없이 목록 맨 위에 나타납니다. 목록에서 실행 파일 이름을 찾아서 선택 command line하여 open조치 이름 의 필드 를 수정하십시오 .

windows7에서는 재부팅이나 응용 프로그램 재시작없이 변경 사항이 즉시 반영되었습니다. 그러나 Nirsoft 유틸리티에는 수정시 "데스크톱 새로 고침"기능이 있으므로 Vista 또는 이전 OS 버전이 데이터를 캐시 할 수 있다고 생각합니다. 이 경우 유틸리티가 더 나은 방법 일 것입니다. 그렇지 않으면 변경 사항을 확인하기 위해 로그 오프했다가 로그온해야합니다.


1
참고로 : % 1은 항상 관련 파일을 프로그램에 전달하는 데 사용해야합니다. 직접 % *를 사용하면 작동하지 않는 것 같습니다. 적어도 내 ".pl"-내 승리 7에 펄 협회에 문제가있어
vlad_tepesch

1
시행 착오에 의해 작동하여 다음과 같은 데이터 값이 발생했습니다. "C:\Program Files\nodejs\node.exe" "%1"%*참고 : %*값은 따옴표가 아니며 값과 이전 큰 따옴표 사이에 공백이 없습니다.
Michael Paulukonis

또한 절차를 수행하는 파일의 확장자가있는 HKEY_CLASSES_ROOT\.ulaw경우를 대비하여 regedit에서 키 를 삭제 .ulaw했습니다.
Matt

호 개설하는 동안 인수 ( '테스트')를 전달할 수 있습니까?
장치

설치 컨텍스트에 따라 "[HKLM | HKCU] \ Software \ Classes"를 명시 적으로 수정하려면이 답변을 변경하십시오. HKCR을 직접 수정하지 마십시오. 파일 형식과 기사 는 "중요한 고려 사항"HKEY_CLASSES_ROOT참조하십시오. Microsoft 자체의 많은 문서가 Windows 2000 경에 도입 된 HKCR에 대한 통합 된 견해보다
Eryk Sun

10

당신과이 할 수있는 assocftype프롬프트 명령에. 오픈 상승 프롬프트 명령을하고 다음을 시도하십시오

ftype MyFileType = C : \ MyDir \ MyProgram.exe / arg1 / arg2 "% 1"
assoc .xyz = MyFileType

.xyz확장 프로그램을 확장 MyProgram.exe하고 명령 줄 /arg1 /arg2 [filename.xyz]을 프로그램에 전달 하여 확장 프로그램을 실행합니다.


1
이것이 내가 연구 한 것의 정답 인 것처럼 보이기 때문에 받아 들였습니다. 그러나이 프로세스는 사용중인 시스템에서 효과가없는 것으로 보입니다. ftype과 assoc을 사용하여 변경 사항이 적용되었는지 확인할 수 있지만 파일을 여는 데 사용되는 프로그램에는 영향을 미치지 않습니다. 프로세스가 Windows 7에서 변경되었을 수 있습니까?
jtpereyda

사용 마커스 교황의 응답 은 윈도우 7 사용하여 내 옆에서 제대로 작동 만드 재생하려고되었습니다 .ulaw로 파일을 sox그것에서 미리 정의 된 인수를 사용하여. 이전 응용 프로그램을 삭제하는 것 외에도 HKEY_CLASSES_ROOT\.ulaw파일 유형을 정의하고있는 파일 도 삭제했습니다 .
Matt

CMD의 assocftype기존 명령입니다. Windows XP, 7, 8에 추가 된 파일 연결 확장명으로 업데이트되지 않았습니다. 시스템 키 "HKLM \ Software \ Classes"아래의 파일 연결 및 ProgId 키만 수정합니다. 우선 순위를 취하는 사용자 별 HKCU 설정 또는 "응용 프로그램"및 "SystemFileAssociations"와 같은 최신 하위 키 또는 "RegisteredApplications"의 응용 프로그램 별 기능 키를 읽거나 수정하지 않습니다. 또한 "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts"에서 사용자의 선택을 읽거나 수정하지 않습니다.
Eryk Sun

3

질문을 한 사람이 Best answer가 실제로 작동하지 않는다고보고합니다.

XP에 대해 알아 냈으며 이후 OS에 적용될 수 있습니다.

cmd 프롬프트에는 assoc,, 두 가지 명령이 필요합니다 ftype.

이 두 가지는 관련 내용을 표시 한 다음 연결을 편집 할 수 있지만 꼬임이 있으며 MS 명령이 잘못되었거나 불완전한 것으로 보입니다. 알려진 베테랑 응용 프로그램에서 문서화되지 않은 연결 스타일을 알면서 경고했습니다. 왜 그렇습니까?

이 예에서는 많은 인수를 연관 프로그램에 전달할 수 있습니다.

ftype name_of_assoc="C\blah\aprog.exe" "%1" "%*"

오타가 아닙니다 "%1" "%*". 퍼센트 스타는 선행 퍼센트 1 없이는 작동하지 않습니다 .

로그 아웃 할 필요없이 즉시 적용됩니다.

3을 arg로 전달합니다.]

myfile.wotsit file1 file2 file3

그것을하지 않았지만 프로그램에 플래그가 필요한 경우 다음 외부 따옴표가 -m을 전달하는 것처럼 보입니다.

ftype name_of_assoc="C\blah\aprog.exe" -m "%1" "%*"

나는 이것이 옳지 않다고 생각합니다. "% *"를 따옴표로 묶으면 인수 목록이 단일 인수로 전달됩니다. 또한 드라이브 문자 다음에 콜론이 누락되었습니다. 올바른 명령은 다음과 같아야합니다. ftype name_of_assoc = "C : \ blah \ aprog.exe"-m "% 1"% *
User0

나는 우수한 FilesTypeMan 프로그램을 사용하고 있으며,이 경우 %1 %* 따옴표없이 필요 합니다 ! 젠장
Jean-François Fabre

2

Windows7의 이전 버전의 PSP와 비슷한 문제가있었습니다.

이 솔루션 (레지스트리에서 셸 \ open \ 명령 줄 변경)이 작동했지만 "C : \ MyFolderName \ PSP.EXE"구문이 있어야했습니다. % 1 NO QUOTES AROUND % 1 그렇지 않으면 상수로 해석됩니다.


1
왜 downvotes? 이 대답은 마침내 내가 명령을 올바르게하는 데 도움이되었습니다!
ylka

감사합니다 - 나는 따옴표를했고 그것이 작동하지 않는
피오나 - myaccessible.website

1

가장 좋은 해결책은 아니지만 가장 쉬운 방법은 배치 파일을 사용하는 것입니다.

이와 같은 bat 파일을 작성하고 파일 확장자에 맞게 기본 프로그램을 설정하십시오. 그리고 예, 시작 후 빈 따옴표가 필요합니다.

{앱 이름} .bat

    start "" "{app path}" %1 /edit

예:

BCompareEdit.bat

    start "" "C:\Program Files\Beyond Compare 4\BCompare.exe" %1 /edit

1
이것은 Windows 10에서 저에게 도움이 된 유일한 솔루션입니다. / w 옵션으로 Word 2013을 시작하여 가상 데스크톱에서 Word를 사용하는 데 필요한 각 시작마다 새 인스턴스를 만들 수 있습니다.
vicmortelmans

0

여기 에 원하는 것을 정확하게하는 확장 프로그램이 있습니다. 나는 전에 그것을 사용한 적이 없지만 좋은 리뷰를 얻는 것 같습니다. 문제가 있으면 의견을 남겨주세요.


-1

Windows 바로 가기를 만들고 다음 템플릿을 사용하십시오.

"C:\Windows\system32\mspaint.exe" "c:\data\basejpg.jpg" %1

2
그리고 사용자는 이것을 어떻게 사용하여 xyz.jpg?
G-Man, 'Reinstate

그는 이것을 달성하기 위해 레지스트리를 변경하는 방법을 물었다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.