Batch Verknüpfung erstellen mit Parametern
Folgendes soll realisiert werden,
auf mehreren Rechner soll eine Programmverknüpfung in den Autostart von AllUsers erstellt werden.
Dafür habe ich unten stehendes "Batch" bereits gefunden und angepasst.
Funktioniert auch soweit, bis auf eine kleine aber elementar wichtige Sache.
Und zwar set "progexe=FriFax32.exe -a"
Dort soll der Parameter -a angehängt sein.
So bekomme ich als Ergebnis unter Ziel aber: "C:\Programme\Fritz!\FriFax32.exe -a"
Das -a müsste ja aber außerhalb der Anführungszeichen stehen.
Ist das mit meinem Ansatz realisierbar oder hab ich mich da verlaufen?
@echo off & setlocal
::Speicherort der Verknüpfung (unterhalb von Startmenue\Programme)
set "zielpfad=%allusersprofile%\Startm~1\Programme\autostart"
::Falls das Symbol auf den Desktop soll:
::set "zielpfad=%userprofile%\Desktop"
::Name der Verknüpfung (ohne ".lnk")
set "progtitel=FritzFax"
::Speicherort der Programmdatei (wird auch für "Ausführen in:" verwendet)
set "progdir=%programfiles%\Fritz!\"
set "progexe=FriFax32.exe -a"
::Kommentar
set "beschreibung=Faxfunktionalität für Metro"
::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad"):
if not exist "%zielpfad%" md "%zielpfad%"
::temporäres VBScript erzeugen ...
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs
echo objShortcut.Save>>%temp%\MakeShortCut.vbs
::... ausführen ...
cscript //nologo %temp%\MakeShortCut.vbs
::... und wieder löschen.
del %temp%\MakeShortCut.vbs
auf mehreren Rechner soll eine Programmverknüpfung in den Autostart von AllUsers erstellt werden.
Dafür habe ich unten stehendes "Batch" bereits gefunden und angepasst.
Funktioniert auch soweit, bis auf eine kleine aber elementar wichtige Sache.
Und zwar set "progexe=FriFax32.exe -a"
Dort soll der Parameter -a angehängt sein.
So bekomme ich als Ergebnis unter Ziel aber: "C:\Programme\Fritz!\FriFax32.exe -a"
Das -a müsste ja aber außerhalb der Anführungszeichen stehen.
Ist das mit meinem Ansatz realisierbar oder hab ich mich da verlaufen?
@echo off & setlocal
::Speicherort der Verknüpfung (unterhalb von Startmenue\Programme)
set "zielpfad=%allusersprofile%\Startm~1\Programme\autostart"
::Falls das Symbol auf den Desktop soll:
::set "zielpfad=%userprofile%\Desktop"
::Name der Verknüpfung (ohne ".lnk")
set "progtitel=FritzFax"
::Speicherort der Programmdatei (wird auch für "Ausführen in:" verwendet)
set "progdir=%programfiles%\Fritz!\"
set "progexe=FriFax32.exe -a"
::Kommentar
set "beschreibung=Faxfunktionalität für Metro"
::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad"):
if not exist "%zielpfad%" md "%zielpfad%"
::temporäres VBScript erzeugen ...
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs
echo objShortcut.Save>>%temp%\MakeShortCut.vbs
::... ausführen ...
cscript //nologo %temp%\MakeShortCut.vbs
::... und wieder löschen.
del %temp%\MakeShortCut.vbs
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 120880
Url: https://administrator.de/contentid/120880
Ausgedruckt am: 09.11.2024 um 01:11 Uhr
3 Kommentare
Neuester Kommentar
Servus,
ganz ehrlich ich mach mir das viel einfacher...(wenn ich es nicht anders hinkriege)
in einem (versteckten) Ordner kopiere ich alle möglichen original .lnks (genau so, wie Sie ein müssen)
und dann via if not exist "%allusersprofile%\Startm~1\Programme\autostart\bla bla.lnk" copy "\\server\share$\bla bla.lnk" "%allusersprofile%\Startm~1\Programme\autostart\"
da blicke ich und jeder andere immer einfacher durch, als via temporärem .vbs.
Aber wenn du es unbedingt so realisierten willst:
sollte dann pi ~ daumen der Ansatz sein.
Gruß
ganz ehrlich ich mach mir das viel einfacher...(wenn ich es nicht anders hinkriege)
in einem (versteckten) Ordner kopiere ich alle möglichen original .lnks (genau so, wie Sie ein müssen)
und dann via if not exist "%allusersprofile%\Startm~1\Programme\autostart\bla bla.lnk" copy "\\server\share$\bla bla.lnk" "%allusersprofile%\Startm~1\Programme\autostart\"
da blicke ich und jeder andere immer einfacher durch, als via temporärem .vbs.
Aber wenn du es unbedingt so realisierten willst:
set "progexe=FriFax32.exe"
echo objShortcut.TargetPath="%progdir%\%progexe%" & Chr(34)& -a & Chr(34)>>%temp%\MakeShortCut.vbs
echo objShortcut.TargetPath="%progdir%\%progexe%" & Chr(34)& -a & Chr(34)>>%temp%\MakeShortCut.vbs
sollte dann pi ~ daumen der Ansatz sein.
Gruß
Hallo hemelinger!
Schau mal in diesen Beitrag rein ...
... bzw versuche es gleich mit einer zusätzlichen Zeile der Art:
Grüße
bastla
Schau mal in diesen Beitrag rein ...
... bzw versuche es gleich mit einer zusätzlichen Zeile der Art:
echo objShortcut.Arguments = "-a" >>%temp%\MakeShortCut.vbs
bastla