developer tip

폴더 위치를 기준으로 Windows 바로 가기를 시작 하시겠습니까?

copycodes 2020. 12. 4. 19:16
반응형

폴더 위치를 기준으로 Windows 바로 가기를 시작 하시겠습니까?


이 파일 구조를 사용하는 게임이 있습니다.

GAME FOLDER
->data
->data->run.bat

run.batGAME FOLDER에 바로 가기를 추가하고 싶지만 이동하거나 다른 사람이 설치하면 대상이 잘못되어 작동하지 않습니다. GAME FOLDER와 관련하여 타겟을 만들고 "시작"하는 방법이 있습니까?


  1. / bat / 폴더를 마우스 오른쪽 버튼으로 클릭하고 바로 가기 만들기를 클릭 합니다.

    • Windows 7 bat - Shortcut에서는 현재 디렉토리로 이동합니다.
    • Windows XP에서는 Shortcut to bat.
  2. 방금 만든 바로 가기를 마우스 오른쪽 단추로 클릭하고 속성을 클릭 합니다.

  3. 변경 대상 합니다 (아래 바로 가기 다음에 윈도우 7에 대한 탭) :

    %windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"
    
  4. 시작 위치 가 비어 있는지 확인하십시오 . 그러면 현재 디렉토리에서 시작됩니다.

  5. 확인을 클릭하십시오. Windows 7에서는 바로 가기 아이콘이 cmd.exe 아이콘으로 변경됩니다.
  6. .bat로 바로 가기의 경우 허용 가능하지만 아이콘을 변경하려면 바로 가기의 속성을 다시 열고 아이콘 변경 ...을 클릭합니다 (다시 Windows 7 바로 가기 탭에서). 이 시점 에서 아이콘을 찾아 보거나 다음을 입력하여 기본 시스템 아이콘 목록을 가져올 수 있습니다.

    %SystemRoot%\system32\SHELL32.dll
    

    Browse...버튼 의 왼쪽에 Enter. 이것은 Windows 7 및 Windows XP에서 작동하지만 스타일 업데이트로 인해 아이콘이 다릅니다 (눈에 띄게 유사 함). 바로 가기가있는 Windows 버전에 따라 아이콘 그에 따라 변경되는 경우가 있습니다.

더 많은 정보:

첫 번째 대상 명령 의 시작 부분에있는 빈 큰 따옴표를 더 잘 이해하려면 시작된 프로그램전달 된 매개 변수와 함께 "시작"명령 사용을 참조하십시오 .


Microsoft에 따르면 'Start In'상자를 비워 두면 스크립트가 현재 작업 디렉토리에서 실행됩니다. 나는 이것을 Windows 7에서 시도했지만 잘 작동하는 것 같습니다.

출처 : http://support.microsoft.com/kb/283065


Relative (Windows 명령 줄 응용 프로그램)를 사용해보십시오 .

기본적으로 바로 가기에는 상대 링크가있을 수 있지만 Windows에서는 실제로 만들 수있는 방법이 없습니다.


시스템 변수 (예 : % MyGameFolder %)를 설정할 수있는 경우 경로 및 바로 가기에서 사용할 수 있으며 Windows가 나머지 경로 (즉, %MyGameFolder%\data\MyGame.exe)를 채 웁니다 .

여기에 작은 입문서가 있습니다. 이 값은 배치 파일을 통해 설정하거나 바로 가기를 만드는 방법을 공유하는 경우 프로그래밍 방식으로 설정할 수 있습니다.


파일 경로를 변경하여 수동으로 상대 바로 가기를 만들 수 있습니다. 먼저 일반적인 컨텍스트 메뉴에서 파일과 속성-> 파일 위치에 Windows의 새 바로 가기를 만듭니다.

%windir%\explorer.exe "..\data\run.bat"


나는 leoj3n의 솔루션을 좋아 합니다 . 또한 start 의 / D 매개 변수를 사용하여 필요한 "시작 위치"디렉토리를 설정하는 데 사용할 수도 있습니다 . cmd 의 인수로 / c 또는 / k가 없으면 후속 시작 명령이 실행되지 않습니다. / c는 명령을 실행 한 직후에 셸을 닫고 / k는 명령이 완료된 후에도 계속 열려 있습니다. 따라서 실행중인 항목이 표준에 도달하고이를 확인해야하는 경우 / k를 사용하십시오.

안타깝게도 lnk 파일 사양 에 따르면 아이콘은 바로 가기에 저장되지 않고 "환경 변수를 사용하여 인코딩되므로 위치가 다르지만 환경 변수를 사용하여 표현되는 시스템에서 아이콘을 찾을 수 있습니다." 따라서 경로가 변경되고 가리키는 실행 파일에서 아이콘을 가져 오려고하면 올바르게 전송되지 않을 수 있습니다.


내가 옳은지, 뭔가 빠졌는지 잘 모르겠지만, 현재 (2016-07-11, Win7 Enterprise SP1 실행) 현재 LNK 파일은 드라이브 문자를 이동하거나 변경 한 후에도 자동으로 조정됩니다. 새로운 곳에서 달려라! USB 드라이브에 새 바로 가기를 만들고 상대 위치가 변경되지 않는 방식으로 바로 가기와 대상을 이동 한 다음 드라이브 문자를 변경했습니다. 바로 가기는 두 경우 모두에서 작동했으며 대상 필드를 두 번 클릭 한 후 조정되었습니다.

Microsoft가 지난 업데이트 중 하나에서이 문제를 해결 한 것 같습니다.

누군가 이것을 확인하십시오.


원하는대로 바로 가기를 만든 후 속성에서 다음을 설정합니다.

표적: %comspec% /k "data\run.bat"

  • /k실행 한 후 프롬프트를 열어 두지 않으려면 드롭하십시오 .

에서 시작: %cd%\data


몇 가지 답변을 읽은 후 간단한 해결책으로하기로 결정했습니다. 바로 가기 대신 한 줄만있는 .bat를 만들어서 기본 .bat를 호출하고 원하는대로 작동합니다.


배치 파일이 현재 작업 디렉토리 (CD)를 변경하도록 할 수 있습니다.


가장 쉬운 해결책 :> 환경 변수는 작은 동물에게 편리합니다.

다른 사람이 각자의 시스템 드라이브 (일반적으로 c :)의 어느 위치 에든 설치 / 압축 해제하는 경우.

데모 목적으로 앱 "test.exe"(실행 파일 일 수 있음 / 파일은 exe 일 필요 없음)를 호출하고 MYCOMPANY \ MYAPP \ 폴더에 설치 / 압축 해제합니다.

그런 다음 % SystemDrive % \ MYCOMPANY \ MYAPP \ test.exe를 대상으로 사용하고 % SystemDrive % \ MYCOMPANY \ MYAPP \를 시작 위치로 사용하는 바로 가기를 만듭니다.

이제 배포하려고합니다. "WinRAR"과 같은 앱 사용.

Easy way is using self-extraction zip file, neatly packaged as an ".exe" I would use one for my shortcut and another for the app. There is ways to make one self-extraction zip file that extracts different files to different directories, but i haven't played with it yet.

Another way is to make a selfextract for the shorcut, embed it inside the selfextract for the app and then apply a run once script,being that you know where the file is going to be. etc.

If you want to enable the installer to use custom installation/uncompress directories, then rather have a look at NSIS a scriptable install system.

Play around it's fun, hope my info helped.


Just a small improvement to leoj3n's solution (to make the console window disappear): instead of putting %windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat" to the Target: field of your Windows shortcut, you can also try adding only the following: %windir%\system32\cmd.exe /c "%CD%\bat\bat\run.bat" AND then also adding start in front of your commands in run.bat. That will make the console window disappear, but everything else remains the same.


The link with a relative path can be created using the mklink command on windows command line.

mklink /d \MyDocs \Users\User1\Documents

This might be the best way to create link because apparently, the behaviour of shortcut can be different perhaps based on the way they are created (UI vs mklink command). I observed some strange behavior with how the shortcuts behave when I change the root folder.

  • There is a weird behaviour on Windows 7 that I tested. Sometimes the the link still just works when the root folder of target is changed (the shortcut properties automatically update to reflect the changed path!). The "start in" field updates automatically as well if it was there.
  • I also noticed that one link doesn't work the first time I change the root path (properties shows old) but it works after the 2nd and everytime after that. The link properties get updated as result of the first run!
  • I also noticed at least for two link, it doesn't update the path and no longer works.
  • From link properties, there is no difference in format of any fields yet the behaviour is different.

looks like no solution for this until now.

감사를위한 ACL 소프트웨어에서 ".."를 사용하여 시작 디렉토리를 나타낼 수 있습니다. 나는 Windows가 비슷한 것을 허용 할 수 있기를 바랍니다.

예 : 원래 경로 : c \ windows \ games \ u2 \ strife.exe 바로 가기를 "games"폴더에 붙여넣고 친구들이 복사를 좋아한다면 ...

경로는 ".. \ u2 \ strife.exe"로 편집 (가능)해야합니다.

참고 URL : https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the-folder-is

반응형