.lnk 바로가기의 환경 변수

.lnk 바로가기의 환경 변수

javaw.exe한 번에 열리는 Windows 바로가기를 만들고 싶습니다.가변 대상. 이 대상은 내 시스템 환경 변수의 내용입니다 %MY_OWN_JAVA_HOME%.

나는 다음을 시도했습니다.

  1. 폴더를 마우스 오른쪽 버튼으로 클릭합니다(Windows 탐색기 사용).
  2. New=>Shortcut
  3. 목적지:%MY_OWN_JAVA_HOME%\bin\javaw.exe -cp ......
  4. 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를 쓰기 보호하여 다시 삽입한 다음 유지 관리할 수 있습니다.

관련 정보