javaw.exe
한 번에 열리는 Windows 바로가기를 만들고 싶습니다.가변 대상. 이 대상은 내 시스템 환경 변수의 내용입니다 %MY_OWN_JAVA_HOME%
.
나는 다음을 시도했습니다.
- 폴더를 마우스 오른쪽 버튼으로 클릭합니다(Windows 탐색기 사용).
New
=>Shortcut
- 목적지:
%MY_OWN_JAVA_HOME%\bin\javaw.exe -cp ......
Next
,Finish
문제는 환경변수가생성 시 계산됨. 이 환경 변수의 설정을 열면현재의변수의 값이 사용됩니다.
변수를 바로가기의 대상으로 유지하려면 어떻게 해야 합니까?
답변1
VBScript 또는 powershell의 COM 개체를 사용하여 환경 변수로 바로가기를 만들 수 있습니다. 방법 "바로가기 만들기"(인수에 대한 자세한 내용도여기) 그럴 수 있어요. 원래는 vbscript 솔루션이지만 다음과 같이 powershell 프롬프트에서 이를 호출할 수 있습니다.
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\Users\Public\Desktop\My Java Shortcut.lnk")
$Shortcut.TargetPath = "%MY_OWN_JAVA_HOME%\javaw.exe"
$Shortcut.Arguments = "-cp"
$Shortcut.Save()
인수는 대상 경로에 포함되지 않습니다. 또한 환경 변수에 공백이 포함되어 있으면 작동하지 않을 수 있습니다. 이것의 장점은 래퍼가 아닌 실제 바로 가기가 있다는 것입니다. 단점은 속성 대화 상자를 통해 이 바로 가기를 변경할 수 없다는 것입니다. 이 작업을 수행하자마자 변수가 다시 대체됩니다.
래퍼를 원한다면 완전히 조용한 vbs 파일도 제안하겠습니다. 새 텍스트 파일을 만들고 해당 줄을 붙여 넣습니다.
CreateObject("WScript.Shell").Run """%MY_OWN_JAVA_HOME%\bin\javaw.exe"" -cp", , False
거기에 "runmyjava.vbs"로 저장하고 해당 파일에 대한 바로가기를 생성하면 단 한 순간도 검은색 팝업이 표시되지 않습니다. 실행 파일 경로 뒤에 추가 ""가 있는지 확인하세요. 환경 변수에 공백이 포함된 경우에만 필요합니다.
답변2
.lnk
한 가지 해결 방법은 Windows XP에서 생성된 바로 가기 파일을 사용하는 것입니다 . 해당 바로가기는 대상을 변경하더라도 변수를 바로가기 대상에 유지합니다.
또 다른 해결책은 주석에서 @DavidPostill이 제안한 대로 다음과 같은 배치 파일을 바로가기 대상으로 사용하는 것입니다.
@echo off
start "" "%MY_OWN_JAVA_HOME%\bin\javaw.exe" %*
그런 다음 바로가기 옵션에서 "최소화"를 선택하세요.
이 솔루션은 잘 작동하지만 잠시 동안 최소화된 cmd 팝업이 열립니다.
답변3
애플리케이션을 실행하려면 'start "" /B'를 실행하는 'Target'이 'cmd /k'인 바로가기를 만드세요.
명령 프로세서(cmd)는 환경 변수를 확인하고 시작이 완료되면 닫힙니다. Start는 창 없이 응용 프로그램을 실행합니다(아직도 깜박거리기는 하지만).
노트:
- 명령프로그램(시작)과 프로그램의 인수에 대한 단일 인수를 원합니다.
- 시작프로그램과 프로그램의 인수에 대해 별도의 인수를 원합니다.
- %CD%는 바로가기의 '시작 위치' 경로로 해석됩니다. 바로가기 경로를 확인하려면 %CD%의 '시작 위치'를 선택 취소하세요.
- Explorer/WshShell에 대해 Target 명령줄이 너무 긴 경우 다른 라이브러리(예: liblnk)를 사용하여 바로 가기를 작성하거나 별도의 배치 파일 호출로 대체해야 합니다.
cmd /k "<<START COMMAND>>"
cmd /k "start "" /B "<<PROGRAM>>" <<PROGRAM ARGUMENTS>>"
cmd /K "start "" /B "%MY_OWN_JAVA_HOME%\bin\javaw.exe" %*"
답변4
최신 Windows 버전에서 작동하는지 여부는 알 수 없지만 Windows Vista에서 작동하는 다른 솔루션을 제안하고 싶습니다. 내 경험에 따르면 .lnk 파일을 보호하면 대상/대상 변수가 항상 확장되는 것을 방지할 수 있습니다. .lnk가 생성될 때(또는 사용될 때) 확장되는 경우가 많지만 다음 번에 .lnk를 사용하기 전에 .lnk를 쓰기 보호하여 다시 삽입한 다음 유지 관리할 수 있습니다.