web-dev-qa-db-ja.com

CMDからショートカットを作成する方法?

コマンドラインユーティリティを使用して、他のファイルまたは実行可能ファイルへのショートカットファイル(.lnk)を作成する方法を教えてください。

75
Shantanu

このサイトには非常に役立つ情報がいくつかあります。 http://ss64.com/nt/shortcut.html

私は持っていないいくつかのリソースキットにいくつかのshortcut.exeがあるようです。
他の多くのサイトが述べているように、バッチファイルからそれを行うための組み込みの方法はありません。

しかし、VBスクリプトから実行できます。

下記のVBスクリプトのオプションセクションはコメントアウトされています。

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

上記のスクリプトを実行すると、デスクトップに新しいショートカットが作成されます。
Resulting shortcut

これは匿名の貢献者からのより完全な抜粋です(マイナーな修正で更新されました):

@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
50
Der Hochstapler

これは、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} 
21
SmallClanger

Shortcut.exeの他に、NirCmdのコマンドラインバージョンを使用してショートカットを作成することもできます。 http://nircmd.nirsoft.net/shortcut.html

16
While Loop

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.
9
Mike

私たちがここで行ったすべての議論の後で、これは私の提案された解決策です:ダウンロード: 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と呼ばれるショートカットを作成するでしょう。

7
alfasin

このトピックは古くからあると思いますが、私にとって効果的な簡単な解決策を提供したいと思いました。

最初に.icoファイルを自分のC:ドライブにコピーしました。それから私は私のデスクトップ上にショートカットを作成し、私のC:ドライブ上のicoファイルにアイコンを設定しました。私はそれから私のユーザーがアクセスできるネットワーク共有への.icoとショートカットの両方をコピーしました。そこでそこに私はユーザーのWindows 7のデスクトップにicoと.urlをコピーするために次のバッチファイルを書きました。これにより、すべてのユーザーのデスクトップにショートカットが作成され、ショートカットの作成時に設定したアイコンファイルが保持されます。これが誰かに役立つことを願っています。

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

この無料プログラムには必要な機能があります http://www.nirsoft.net/utils/nircmd2.html :(上記のWebページのサンプル)"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
goldie