Mit batch verknüpfung erstellen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Mit Batch alleine wird das nicht funktionieren.

Wie spriday das schon etwas umständlich beschrieben hat, ist das zwar auch eine Lösung, aber es geht deutlich einfacher, bzw. direkter mit VBScript.

Option Explicit
' *** MakeDesktopShortcut.vbs ***
Dim fso, wsh, sc, tn, sn
set fso = CreateObject("Scripting.FileSystemObject")

set wsh = CreateObject("WScript.Shell")

tn = Arguments.Unnamed(0)
if not fso.FileExists(tn) then
Err.Raise 53 ' File Not Found
Quit
end if

tn = fso.GetAbsolutePathName(tn)

sn = fso.BuildPath(
wsh.SpecialFolders("Desktop"), fso.GetBaseName(tn) & ".lnk")

set sc = wsh.CreateShortcut(sn)

With sc
.TargetPath = tn

.WorkingDirectory = fso.GetParentFolderName(tn)
.Save
End With



Das speicherst Du dann einfach unter dem angegebenen oder sonst einem Namen ab und dann kannst Du einfach die entsprechende Datei als Parameter angeben und es wird eine ordentliche Windows-Verknüpfung davon auf dem Desktop erstellt.

Allerdings solltest Du darauf achten, dass dieses Script irgendwo im PATH abgespeichert wird, bzw. dass Du den PATH entsprechend erweiterst. Um es unkompliziert zu machen: speichere es einfach unter "%windir%".

Aufruf:

MakeDesktopShortcut.vbs "Meine Datei.txt"

Wenn du eine Internet-Security laufen hast, solltest Du u.U. folgenden Befehl wählen, da wscript.exe maskiert sein kann:

"%SystemRoot%\system32\wscript.exe" //NOLOGO MakeDesktopShortcut.vbs "Meine Datei.txt"

Diesen Befehl kannst Du aber dann auch in eine Batch packen, damit Du das nicht immer wieder neu eingeben musst:

@"%SystemRoot%\system32\wscript.exe" //NOLOGO MakeDesktopShortcut.vbs %*

Damit kannst Du dann via Batch das VBScript aufrufen.


Man kann das entweder mit Batch über die PowerShell machen:

powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Start Menu\Programs\Startup\%~n0.lnk');$s.TargetPath='%~f0';$s.Save()"

oder über einen Batch-internen Befehl:

mklink "%userprofile%\Start Menu\Programs\Startup\%~nx0" "%~f0"

Ich würde dich trotzdem noch darauf hinweisen, dass man sowas innerhalb einer Minute im Internet findet.


MarkusGenervt  02.11.2016, 07:28

kleine Korrektur:

MKLINK ist kein Batch-interner Befehl, sonder völlig eigenständig und kann von jeder Befehlszeile aus aufgerufen werden.

Außerdem erstellt MKLINK SymLinks, HardLinks und Junction Points, aber keine Windows-Verknüpfungen (manchmal auch als SoftLinks bezeichnet). Das ist etwas völlig Anderes.

2