コマンドラインユーティリティを使用して、別のファイルや実行ファイルへのショートカットファイル(.lnk
)を作成するにはどうすればよいですか?
89 Shantanu 2012-02-20
このサイトには非常に有益な情報があります。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
60 Der Hochstapler 2012-02-20
ここに 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}
29 SmallClanger 2014-11-06
shortcut.exe以外にも、コマンドライン版のNirCmdでもショートカットを作成することができます。http://nircmd.nirsoft.net/shortcut.html
18 While Loop 2013-09-30
mklinkコマンドを使ってみませんか?C:\WindowsSystem32>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.
14 Mike 2014-04-24
我々はここで持っていたすべての議論の後、これは私の提案されたソリューションです:ダウンロードしてください。http://optimumx.com/download/Shortcut.zipデスクトップ上に解凍してください。さて、あなたがscrum.pdfというファイルのショートカットを作成したいとします(デスクトップにもあります):1. CMDを開き、デスクトップフォルダに移動します。Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf
そうすると、デスクトップ上に sc.lnk というショートカットが作成され、元のファイル (scrum.pdf) を指すようになります
7 Nir Alfasi 2012-02-20
Gitがインストールされている場合、コマンドラインからショートカットを作成できるcreate-shortcut.exe
がバンドルされており、Windows 10で動作します。このユーティリティはAFAICTでは公開されていませんし、--help
は最小限のものです
Usage: create-shortcut.exe [options] <source> <destination>
しかし、Sysinternalsのstrings
ユーティリティを使って.exe
から文字列を抽出することで、[options]
とショートカットのProperties
ページに表示されているフィールドへのマッピングを何とかすることができました
--work-dir ('Start in' field)
--arguments (tacked onto the end of the 'Target')
--show-cmd (I presume this is the 'Run' droplist, values 'Normal window', 'Minimised', 'Maximised')
--icon-file (allows specifying the path to an icon file for the shortcut)
--description ('Comment' field)
Example usage:
REM If bin folder already in your PATH, omit CD line:
cd /d "C:\Program Files\Git\mingw64\bin"
create-shortcut.exe --work-dir "C:\path\to\files" --arguments "--myarg=myval" "C:\path\to\files\file.ext" "C:\path\to\shortcuts\shortcut.lnk"
strings
ユーティリティは、Windows Vista、7、8、8.1、10とのアプリケーションの互換性も明らかにします
1 Jimadine 2020-07-24
このフリープログラムには必要な機能があります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 shortcut “c:\windowssystem32\calc.exe” “~$folder.desktop$” “Windows Calculator”
0 goldie 2015-04-12
私はこのトピックが古いことを知っているが、私は私のために働いたシンプルなソリューションを提供したいと思いました
まず、.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 2015-07-21
ステップ1:CMDファイルの場所を開きます
ステップ2:コマンドプロンプトのプロパティを右クリックして、このようにお気に入りのショートカットを設定します
0 gadolf 2020-01-24