CMD에서 바로 가기를 만드는 방법?


76

.lnk명령 줄 유틸리티를 사용하여 다른 파일이나 실행 파일에 대한 바로 가기 파일 ( )을 어떻게 만들 수 있습니까?


1
그렇게 할 수있는 간단한 방법은 없습니다. 어떤 사람들은 당신이 할 수있는 도구를 작성했습니다. 여기에 그들 중 하나가 있습니다 . "windows create shortcut command line"에 대한 Google 검색으로 다른 것들이 나타납니다. (나는 그들 중 하나를 시도하지 않았습니다.)
Keith Thompson

@iglvzx-편집 한 내용이 정확한지 잘 모르겠습니다. Shantanu에 배치 스크립트가 필요하다고 생각하지 않습니다. * .lnk를 다른 * .exe 파일로 만드는 방법 일 수 있습니다.
alfasin 2019

@alfasin 내가 (.ink file)혼란 스러워서 추가했다 . Shantanu의 의견을 반영하여 질문을 수정했습니다. '바로 가기'를 만드는 방법을 제공하지만이 특정 질문에 대답하지는 않습니다.
iglvzx 2019

1
다음을 사용하십시오. powershell "$ s = (New-Object -COM WScript.Shell) .CreateShortcut ( '% userprofile % \ Desktop \ shortcut.lnk'); $ s.TargetPath = 'C : \ Windows \'; $ s .Save () "분명히," '% userprofile % \ Desktop \ shortcut.lnk "및"C : \ Windows \ "를 각각 바로 가기 경로 및 대상 경로로 바꾸십시오.
cowlinator

@cowlinator 입력 한대로 제안이 작동하지 않습니다.
Ploni

답변:


53

이 사이트에는 다음과 같은 유용한 정보가 있습니다 : http://ss64.com/nt/shortcut.html

shortcut.exe내가 가지고 있지 않은 일부 리소스 키트에있는 것처럼 보입니다 .
많은 다른 사이트에서 언급했듯이 배치 파일에서 기본 제공 방법이 없습니다.

그러나 VB 스크립트에서 수행 할 수 있습니다.

아래 VBscript의 선택적 섹션은 주석 처리됩니다.

Set oWS = WScript.CreateObject("WScript.Shell")
sLinkFile = "C:\MyShortcut.LNK"
Set oLink = oWS.CreateShortcut(sLinkFile)
    oLink.TargetPath = "C:\Program Files\MyApp\MyProgram.EXE"
 '  oLink.Arguments = ""
 '  oLink.Description = "MyProgram"   
 '  oLink.HotKey = "ALT+CTRL+F"
 '  oLink.IconLocation = "C:\Program Files\MyApp\MyProgram.EXE, 2"
 '  oLink.WindowStyle = "1"   
 '  oLink.WorkingDirectory = "C:\Program Files\MyApp"
oLink.Save

따라서 실제로 해야하는 경우 배치 파일이 VB 스크립트를 디스크에 쓰도록 한 다음 호출 한 다음 다시 제거 할 수 있습니다. 예를 들면 다음과 같습니다.

@echo off
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%HOMEDRIVE%%HOMEPATH%\Desktop\Hello.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\Windows\notepad.exe" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs

위의 스크립트를 실행하면 바탕 화면에 새로운 바로 가기가 생성됩니다.
결과 바로 가기

다음은 익명의 기고자 (사소한 수정으로 업데이트 됨)의 더 완전한 스 니펫입니다.

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET LinkName=Hello
SET Esc_LinkDest=%%HOMEDRIVE%%%%HOMEPATH%%\Desktop\!LinkName!.lnk
SET Esc_LinkTarget=%%SYSTEMROOT%%\notepad.exe
SET cSctVBS=CreateShortcut.vbs
SET LOG=".\%~N0_runtime.log"
((
  echo Set oWS = WScript.CreateObject^("WScript.Shell"^) 
  echo sLinkFile = oWS.ExpandEnvironmentStrings^("!Esc_LinkDest!"^)
  echo Set oLink = oWS.CreateShortcut^(sLinkFile^) 
  echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^("!Esc_LinkTarget!"^)
  echo oLink.Save
)1>!cSctVBS!
cscript //nologo .\!cSctVBS!
DEL !cSctVBS! /f /q
)1>>!LOG! 2>>&1


파일 바로 가기에 적합합니다. 그러나 변수 Esc_LinkTarget에 상위 폴더를 가져 오는 환경 변수가 포함되어있을 때 폴더 바로 가기에 사용하는 데 이상한 문제가 있습니다. % CD % \ ..와 같은 것은 작동하지 않지만 % CD %는 작동합니다. 바로 가기 대상 유형은 '폴더'대신 '파일'이됩니다.
EDM

1
@ Edmund 흥미로운 문제. 조사 할 시간이 없지만 후행 슬래시가 차이를 만들 수 있다고 가정합니다.
Der Hochstapler

참고 : 사용하는 경우 SET Esc_LinkTarget=%0다음 당신은 제거 할 필요가 "에서echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^(!Esc_LinkTarget!^)
블랙

각 실행에 대해 vbscript를 작성하는 대신 Wscript.Arguments명령 행 인수를 얻는 데 사용 하는 것이 훨씬 낫습니다 ... lol
Sancarn

22

다음은 powershell을 사용하는 비슷한 솔루션입니다. PS에서 전체 배치 파일을 다시 쓸 수는 있지만 Get It Done ™을 원한다면 ...)

set TARGET='D:\Temp'
set SHORTCUT='C:\Temp\test.lnk'
set PWS=powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile

%PWS% -Command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut(%SHORTCUT%); $S.TargetPath = %TARGET%; $S.Save()"

파일에서 PS의 경로를 명시 적으로 지정해야 할 수도 있지만 작동해야합니다. 이 객체를 엉망으로 만들 수있는 몇 가지 추가 속성이 있습니다.

Name             MemberType Definition                             
----             ---------- ----------                             
Load             Method     void Load (string)                     
Save             Method     void Save ()                           
Arguments        Property   string Arguments () {get} {set}        
Description      Property   string Description () {get} {set}      
FullName         Property   string FullName () {get}               
Hotkey           Property   string Hotkey () {get} {set}           
IconLocation     Property   string IconLocation () {get} {set}     
RelativePath     Property   string RelativePath () {set}           
TargetPath       Property   string TargetPath () {get} {set}       
WindowStyle      Property   int WindowStyle () {get} {set}         
WorkingDirectory Property   string WorkingDirectory () {get} {set} 

Trix : 더 좋은 방법 이 있다고 생각되면 새로운 답변으로 게시하십시오 (적절한 경우이 답변에 연결).
Scott


10

mklink 명령은 어떻습니까? C : \ Windows \ System32> mklink 심볼릭 링크를 만듭니다.

MKLINK [[/ D] | [/ H] | [/ J]] 링크 대상

    /D      Creates a directory symbolic link.  Default is a file
            symbolic link.
    /H      Creates a hard link instead of a symbolic link.
    /J      Creates a Directory Junction.
    Link    specifies the new symbolic link name.
    Target  specifies the path (relative or absolute) that the new link
            refers to.

10
좋은 생각이지만 심볼릭 링크는 단축키와 약간 다르게 동작하는 것으로 보입니다. Visual Studio 솔루션에 대한 바로 가기를 만들면 비교적 경로가 지정된 모든 프로젝트가 올바르게 열립니다. 그러나 심볼릭 링크를 통해 동일한 솔루션을 열면 작업 디렉토리는 심볼릭 링크가 아닌 경로가있는 경로의 디렉토리입니다.
Walter Stabosz

7

우리가 여기에 모든 토론을 한 후에, 이것이 나의 제안 된 해결책입니다 : 다운로드 : http://optimumx.com/download/Shortcut.zip 데스크탑에서 추출하십시오 (예 :). 이제 scrum.pdf라는 파일의 바로 가기를 생성한다고 가정합니다 (데스크탑에 있음).
1. CMD를 열고 데스크탑 폴더로 이동합니다
. 2. 실행 :Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf

바탕 화면에 원본 파일 (scrum.pdf)을 가리키는 sc.lnk라는 바로 가기가 생성됩니다.


바로 가기가 아닙니다. 지정된 프로그램을 호출하는 배치 파일 일뿐입니다.
Keith Thompson

1
제목에서 CMD를 사용하고 태그 "명령 줄"을 넣었 기 때문에 바로 가기는 Windows에서 실행하는 것입니다. CMD에서 실행하려고한다고 가정했습니다. 배치 파일은 CMD (dos like) env에서 실행할 때 "바로 가기"창에 해당합니다.
alfasin

2
질문 본문에 "바로 가기 (.lnk 파일)"를 넣었으므로 실제 바로 가기를 만들고 싶다고 가정했습니다.
Keith Thompson

1
명확하게해서 죄송합니다. exe 파일에 대한 바로 가기 인 cmd로 만든 아이콘을 데스크탑에 설치하고 싶습니다
Shantanu

이제 마침내 이해했습니다 (느린 사상가-당신이 할 수있는 일 ...) 나는 내 대답을 바꿨습니다. 그것이 도움이되기를 바랍니다!
alfasin

0

이 무료 프로그램에는 http://www.nirsoft.net/utils/nircmd2.html 기능이 필요합니다 . (상기 웹 페이지의 샘플) "Create a shortcut to Windows calculator under Start Menu->Programs->Calculators nircmd.exe shortcut "f:\winnt\system32\calc.exe" "~$folder.programs$\Calculators" "Windows Calculator"

시도해 볼만한 샘플 : nircmd.exe 단축키 "c : \ windows \ system32 \ calc.exe" "~ $ folder.desktop $" "Windows Calculator"


0

나는이 주제가 오래되었다는 것을 알고 있지만 나를 위해 일한 간단한 솔루션을 제공하고 싶었습니다.

먼저 .ico 파일을 C : 드라이브에 복사했습니다. 그런 다음 바탕 화면에 바로 가기를 만들고 아이콘을 C : 드라이브의 ico 파일로 설정했습니다. 그런 다음 .ico와 바로 가기를 모두 사용자가 액세스 할 수있는 네트워크 공유에 복사했습니다. 일단 다음 배치 파일을 작성하여 ico 및 .url을 사용자 Windows 7 바탕 화면에 복사했습니다. 이렇게하면 모든 사용자 바탕 화면에 바로 가기가 만들어지고 바로 가기를 만들 때 설정 한 아이콘 파일이 유지됩니다. 나는 이것이 누군가를 돕기를 바랍니다.

@echo off
Copy "\\sharename\folder\icon.ico" "C:\"
pause
copy "\\sharename\folder\shortcut.url" "C:\Users\All Users\Desktop"
pause

이것이 접근 방법이라면 아이콘을 포함하는 실제 바로 가기 (.lnk)를 만드는 것이 좋습니다. 그런 다음 바로 가기를 어디에서나 복사 할 수 있습니다.
LPChip
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.