Batch Datei - .Exe Datei als Verknüpfung auf Desktop erstellen?

2 Antworten

Mit purem Batch ist das nicht zu machen. Windows stellt ein ComObjekt zur Verfügung, welches über "höhere" Sprachen verfügbar ist. Für die die Direkte Ausführung in einer Batch ist eignen sich am besten VBScript/JScript oder Powershell.

VBS/JS benötigen das erzeugen eines Temporären Scripts. für Powershell kann man ein ganzes Script in gekürzter Form in der Kommandozeile ausführen.

Hier eine abgespeckte Variante zum erzeugen eines Desktop-ShortCuts per Powershell-Kommandozeile innerhalb einer Batch:

Demo.cmd

set "LinkName=%userprofile%\Desktop\Performance Monitor.lnk"
set "Target=C:\Windows\System32\perfmon.exe"
powershell -c "$WShl=New-Object -c WScript.Shell;$SCut=$WShl.CreateShortcut('%LinkName%');$SCut.TargetPath='%Target%';$SCut.Save()"

Das "eingedampfte Powerschellscript mal in "Schönschrift" mit allen möglichen Attributen

demo.ps1

$WShShell = New-Object -ComObject WScript.Shell
 #Pfad/Name des Links
$Shortcut = $objShell.CreateShortcut("$home\Desktop\DemoShortcut.lnk")
 #ziel des Links
$Shortcut.TargetPath = 'C:\demo\application.exe'
 #argumente optional
$Shortcut.Arguments = '-bla'
 #arbeitsverzeichnis optional
$Shortcut.WorkingDirectory = 'c:\demo'
 #Fensterattribut (3=Maximized 7=Minimized  4=Normal) optional
$Shortcut.WindowStyle = 7
 # iconquelle optional
$Shortcut.IconLocation = 'C:\demo\myicon.ico'
 # tastenkombination optional
$Shortcut.Hotkey = "ALT+CTRL+R"
$Shortcut.Save() 

natürlich geht das auch ganz klassisch mit einem Hilfsscript in JScript. Hier mal eine voll kommetierte Variante aus meinem Archiv.

Demo.cmd

@echo off
chcp 65001 >nul
  rem Wenn das Script noch nicht existiert erzeuge  es im Temp-Ordner
if not exist "%temp%\CreateShortCut.js" echo args=WScript.Arguments;if (args.length^>7){ShCt=new ActiveXObject('WScript.Shell').CreateShortcut(args(0));ShCt.TargetPath=args(1);ShCt.Arguments=args(2).replace(/'/g,String.fromCharCode(34));if(args(3).match(/^^.+$/)){ShCt.IconLocation=args(3)};ShCt.WorkingDirectory=args(4);ShCt.Description=args(5);ShCt.HotKey = args(6);if(args(7).match(/^^\d$/)){ShCt.WindowStyle=args(7)};ShCt.Save()};>"%temp%\CreateShortCut.js"


  rem Parameter: "Shortcut-Datei" "ZielProgramm für den Shortcut" "[optional:Argumente  !!!innere "Gänsefüßchen nicht möglich"!!!]"  "[optional:Icondatei,iconindex]" "[optional:ArbeitsVerzeichnis]" "[optional:Anmerkungen]" "[optional:Tastenkombination (aus:ALT+,CTRL+,SHIFT+,A..Z,0..9,Back,Tab,Clear,Return,Escape,Space,Prior)]" "[optional:Fenstemodus (3=Maximiert,4=normal oder 7=minimiert)]"
  rem Es müssen immer 7 Werte angegeben werden! Leere Werte/default mit "" angeben.
  rem Argumente, welche normalerweise  in "Gänsefüßchen" übergeben würden, stattdessen in 'SingleQuotes' schreiben! zB. "Argument1 'Agument in normalerweise Gänsefüßchen' usw."
  rem Icon-Indexe  für Shell32.dll: https://diymediahome.org/windows-icons-reference-list-with-details-locations-images/
cscript //nologo "%temp%\CreateShortCut.js" "%userprofile%\Desktop\CMD Max.lnk" "cmd" "/t:1f /k echo Hallo %username%" "" "" "startet cmd maximiert" "CTRL+Alt+M" "3" 

pause

https://learn.microsoft.com/de-de/troubleshoot/windows-client/admin-development/create-desktop-shortcut-with-wsh

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
Manfred958 
Fragesteller
 25.11.2022, 08:54

oh Wow, viele nDank für die Erklärung und Skripte, top!

0

Hallo Manfred958,

üblicherweise könntest Du die .exe-Daten auswählen, einen Rechtsklick drauf machen und dann "Senden an" => Desktop; und dann hast Du eine Verknüpfung auf dem Desktop, die Du einfach nur anklicken brauchst, um die .exe zu starten.

Liebe Grüße 🙂

Manfred958 
Fragesteller
 24.11.2022, 17:24

Danke für die schnelle Antwort. Ich möchte jedoch per Softwareverteilung automatisch eine Verknüpfung auf den Desktop erstellen, sobald das Programm installiert ist. Ich rühre die Rechner nicht per Maus an.

1
Ralph9  24.11.2022, 17:27
@Manfred958

ohhh ok, das ist natürlich eine andere Ausgangslage; damit arbeite ich nicht. Da müsste ich selber im Internet bei den einschlägigen Foren für Administratoren nachlesen ... tut mir leid ...

1
Manfred958 
Fragesteller
 24.11.2022, 17:31
@Ralph9

Kein Problem, trotzdem Danke für deinen Versuch :)

1
Ralph9  24.11.2022, 17:32
@Manfred958

Bitte, gern 👍;

die eigentliche Ausgangslage hab ich natürlich nicht geahnt ... 🤷‍♂️ ... aber hier gibt's ja eigentlich auch genügend Community-Experten für solche Fragen, da sollte sich auch hier eine hilfreiche Antwort ergeben ... . Ich hab jetzt mal noch die Themen Softwareverteilung, Fernwartung und Systemadministration hinzugefügt; vielleicht wird dann eher jemand aufmerksam ... .

Viel Erfolg und liebe Grüße 🙂

1