Anlegen eines Shortcuts auf dem Desktop
Hallo zusammen,
Ich habe heute mein erstes VB-Script geschrieben. Damit möchte ich ShortCuts auf dem Desktop erstellen.
Ich habe allerdings 3 Fragen/Probleme:
1.) Wie kann ich die Icons in einen Ordner (%Allusersdesktop%\Ordnername) auf den Desktop erstellen. Bisher schaffe ich es nur, die Icons direkt auf dem Desktop zu erstellen.
2.) Mein Shortcut funkioniert erst, nachdem ich einmal die Einstellungen vom Shortcut gehe und mit "OK" die Einstellungen wieder schließe.
3.) Muss ich etwas beachten, wenn ich das Script unter Windows 7 ausführe? Ändern sich dann irgendwelche Parameter oder Variablen?
Anbei noch mein Script, damit man sieht, was ich falsch gemacht habe..:
Anzumerken ist, dass die Zeile, in der das Ziel angeben wird, im späteren Link zu Beginn wie folgt aussieht:
Nachdem ich einmal in den Einstellungen war und mit "OK" wieder verlassen habe, ändert sich der Link wie folgt und funktioniert:
Im Idealfall sieht der Pfad am Ende so aus:
Ich hoffe, dass das soweit verständlich ist. Wenn nicht, dann erkläre ich es gerne ausführlicher.
Ich bin für jeden Hinweis dankbar, da ich momentan nicht mehr weiter komme.
vielen Dank im Voraus.
kafri84
Ich habe heute mein erstes VB-Script geschrieben. Damit möchte ich ShortCuts auf dem Desktop erstellen.
Ich habe allerdings 3 Fragen/Probleme:
1.) Wie kann ich die Icons in einen Ordner (%Allusersdesktop%\Ordnername) auf den Desktop erstellen. Bisher schaffe ich es nur, die Icons direkt auf dem Desktop zu erstellen.
2.) Mein Shortcut funkioniert erst, nachdem ich einmal die Einstellungen vom Shortcut gehe und mit "OK" die Einstellungen wieder schließe.
3.) Muss ich etwas beachten, wenn ich das Script unter Windows 7 ausführe? Ändern sich dann irgendwelche Parameter oder Variablen?
Anbei noch mein Script, damit man sieht, was ich falsch gemacht habe..:
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("AllUsersDesktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Linkname.lnk")
oShellLink.TargetPath = "%programfiles%\Ordnername\Programm.exe" & Chr(34) & " " & Chr(47) & "SERVER=" & Chr(34) & "Servername" & Chr(34) & " " & Chr(47) & "KEY=" & Chr(34) & "12345-A" & Chr(34)
oShellLink.WindowStyle = 1
oShellLink.IconLocation = "%programfiles%\Ordnername\Programm.exe"
oShellLink.Description = "Linkbeschreibung"
oShellLink.WorkingDirectory = "%programfiles%\Ordnername"
oShellLink.Save
Anzumerken ist, dass die Zeile, in der das Ziel angeben wird, im späteren Link zu Beginn wie folgt aussieht:
"%programfiles%\Ordnername\Programm.exe" /SERVER="Servername" /KEY="12345-A""
Nachdem ich einmal in den Einstellungen war und mit "OK" wieder verlassen habe, ändert sich der Link wie folgt und funktioniert:
%programfiles%\Ordnername\Programm.exe /SERVER="Servername" /KEY="12345-A""
Im Idealfall sieht der Pfad am Ende so aus:
%programfiles%\Ordnername\Programm.exe /SERVER="Servername" /KEY="12345-A"
Ich hoffe, dass das soweit verständlich ist. Wenn nicht, dann erkläre ich es gerne ausführlicher.
Ich bin für jeden Hinweis dankbar, da ich momentan nicht mehr weiter komme.
vielen Dank im Voraus.
kafri84
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 144369
Url: https://administrator.de/contentid/144369
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo kafri84!
Zum einen gibt es für die zu übergebenden Argumente
die Eigenschaft "
zum anderen kannst Du ja
um einen (bereits bestehenden) Ordner erweitern, also etwa
Um diesen Ordner (bei Bedarf) zu erstellen, gibt es "
Grüße
bastla
Zum einen gibt es für die zu übergebenden Argumente
/SERVER="Servername" /KEY="12345-A"
.Arguments
" (hatten wir mal hier),zum anderen kannst Du ja
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Linkname.lnk")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Ordnername\Linkname.lnk")
FolderExists
" und "CreateFolder
".Grüße
bastla
Hallo bastla,
ich kann ja falsch liegen, aber Ordnername gehört doch zum Targetpath.
Ich glaube das "nicht expandieren" von %programfiles% stellt das Problem dar.
Geht aber mit SpecialFolders genauso, der Begriff lautet dann nur Programs.
Ungetestet:
Gruß
LotPings
ich kann ja falsch liegen, aber Ordnername gehört doch zum Targetpath.
Ich glaube das "nicht expandieren" von %programfiles% stellt das Problem dar.
Geht aber mit SpecialFolders genauso, der Begriff lautet dann nur Programs.
Ungetestet:
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("AllUsersDesktop")
strWorkDir = WshShell.SpecialFolders("Programs") & "\Ordnername\"
strProgram = strWorkDir & "Programm.exe"
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Linkname.lnk")
oShellLink.TargetPath = strProgram
oShellLink.Arguments = "/SERVER=""Servername"" /KEY=""12345-A"""
oShellLink.WindowStyle = 1
oShellLink.IconLocation = strProgram
oShellLink.Description = "Linkbeschreibung"
oShellLink.WorkingDirectory = strWorkDir
oShellLink.Save
Gruß
LotPings
Hallo an alle,
Ich denke einen neu Beitrag zu erstellen ist nicht notwendig.
Ich habe folgenden Code:
Const strProgramtitel = "Mp3tag"
Const strProgram = """C:\Program Files (x86)\Mp3tag\Mp3tag.exe"""
Const strLPfad = "C:\Users\Tom\Desktop"
Dim objShortcut
Dim objShell
Set objShell = WScript.CreateObject("Wscript.Shell")
Set objShortcut =objShell.CreateShortcut(strLPfad & "\" & strProgramtitel & ".lnk")
objShortcut.TargetPath = strProgram
objShortcut.Description = "Musik"
objShortcut.WorkingDirectory = strLPfad
objShortcut.Save
Dieser Code funktioniert sehr gut.
Ich würde gerne mehr als nur ein Link auf dem Desktop erstellen.
Aber wenn ich das richtig verstehe, kann man mit diesem Code immer ein Programm angeben.
Könnte mir jemand von Euch dabei helfen.
Oder ist das mit diesem Code garnicht möglich?
Vielen Dank schon mal vorab.
Mfg Tom
Ich denke einen neu Beitrag zu erstellen ist nicht notwendig.
Ich habe folgenden Code:
Const strProgramtitel = "Mp3tag"
Const strProgram = """C:\Program Files (x86)\Mp3tag\Mp3tag.exe"""
Const strLPfad = "C:\Users\Tom\Desktop"
Dim objShortcut
Dim objShell
Set objShell = WScript.CreateObject("Wscript.Shell")
Set objShortcut =objShell.CreateShortcut(strLPfad & "\" & strProgramtitel & ".lnk")
objShortcut.TargetPath = strProgram
objShortcut.Description = "Musik"
objShortcut.WorkingDirectory = strLPfad
objShortcut.Save
Dieser Code funktioniert sehr gut.
Ich würde gerne mehr als nur ein Link auf dem Desktop erstellen.
Aber wenn ich das richtig verstehe, kann man mit diesem Code immer ein Programm angeben.
Könnte mir jemand von Euch dabei helfen.
Oder ist das mit diesem Code garnicht möglich?
Vielen Dank schon mal vorab.
Mfg Tom
Bastla hat natürlich Recht, in der Kürze liegt die Würze
meinen etwas länger formulierten Beitrag hänge ich mal an:
Hallo Tom.
Wenn du deunen Code in entsprechende Tags packst kann man ih besser lesen und durch die Zeilennumerierung auch referenzieren.
Ich würde da eine Sub draus machen und sie gezielt mit den einzutragenden Werten aufrufen.
MkShortCut jeweils mit anderen Werten aufrufen.
Ich habe die einzelnen Werte nur der Übersicht halber jeweils in eine neue Zeile gesetzt.
Gruß
LotPings
meinen etwas länger formulierten Beitrag hänge ich mal an:
Hallo Tom.
Ich denke einen neu Beitrag zu erstellen ist nicht notwendig.
Nicht unbedingt, aber dann "sehen" primär nur die am alten Beitrag Beteiligten das es da was neues gibt.Ich habe folgenden Code:
..%<...snip......Wenn du deunen Code in entsprechende Tags packst kann man ih besser lesen und durch die Zeilennumerierung auch referenzieren.
Dieser Code funktioniert sehr gut.
Ich würde gerne mehr als nur ein Link auf dem Desktop erstellen.
Aber wenn ich das richtig verstehe, kann man mit diesem Code immer ein Programm angeben.
Könnte mir jemand von Euch dabei helfen.
Oder ist das mit diesem Code garnicht möglich?
Wenn du etwas anderes machen willst, musst du den Code schon anpassen......Ich würde gerne mehr als nur ein Link auf dem Desktop erstellen.
Aber wenn ich das richtig verstehe, kann man mit diesem Code immer ein Programm angeben.
Könnte mir jemand von Euch dabei helfen.
Oder ist das mit diesem Code garnicht möglich?
Ich würde da eine Sub draus machen und sie gezielt mit den einzutragenden Werten aufrufen.
Option explicit
Dim objShortcut
Dim objShell : Set objShell = WScript.CreateObject("Wscript.Shell")
Dim strDesktop : strDesktop = objShell.SpecialFolders("Desktop")
Sub MkShortcut(strShortCut, strTarget, strDesc, strWorkDir)
Set objShortcut =objShell.CreateShortcut(strShortCut)
objShortcut.TargetPath = strTarget
objShortcut.Description = strDesc
objShortcut.WorkingDirectory = strWorkDir
objShortcut.Save
End Sub
MkShortCut strDesktop & "\" & "Mp3tag" & ".lnk", _
"""C:\Program Files (x86)\Mp3tag\Mp3tag.exe""", _
"Musik", _
strDesktop
MkShortCut jeweils mit anderen Werten aufrufen.
Ich habe die einzelnen Werte nur der Übersicht halber jeweils in eine neue Zeile gesetzt.
Gruß
LotPings
Hallo LotPings,
Vielen Dank für deine Hilfe.
Ja hier habt ja so recht dann kann man das ausführlicher machen
und es schleichen sich keine Fehler hinein.
Mein Fehler war ein vergessendes Wort:
Ich meinte natürlich gleichzeitig mehrere Links auf dem Desktop erstellen.
Es sind einige Rechner die werden mit einer speziellen CMD-Datei bearbeitet.
Dabei soll bei jedem Rechner auch noch die gleichen Desktop-Links vorhanden sein.
Meine Idee war es aus der update.cmd ein Aufruf auf die VBS-Datei zu machen
und bei jedem Rechner werden die gleichen Verknüpfungen zu den Programmen erstellt.
Sorry für meine falsche vorgehensweise.
Vielen Dank noch mal für Eure Hilfe.
Mfg Tom
Vielen Dank für deine Hilfe.
Ja hier habt ja so recht dann kann man das ausführlicher machen
und es schleichen sich keine Fehler hinein.
Mein Fehler war ein vergessendes Wort:
> Ich würde gerne mehr als nur ein Link auf dem Desktop erstellen.
Ich meinte natürlich gleichzeitig mehrere Links auf dem Desktop erstellen.
Es sind einige Rechner die werden mit einer speziellen CMD-Datei bearbeitet.
Dabei soll bei jedem Rechner auch noch die gleichen Desktop-Links vorhanden sein.
Meine Idee war es aus der update.cmd ein Aufruf auf die VBS-Datei zu machen
und bei jedem Rechner werden die gleichen Verknüpfungen zu den Programmen erstellt.
Sorry für meine falsche vorgehensweise.
Vielen Dank noch mal für Eure Hilfe.
Mfg Tom
Hallo Tommylik & LotPings!
Da es nun schon hier weiter geht, auch noch die (ungetestete) Variante "Parameter per Batch":
Aufzurufen wäre das Script dann per
Grüße
bastla
Da es nun schon hier weiter geht, auch noch die (ungetestete) Variante "Parameter per Batch":
Option Explicit
Dim a: Set a = WScript.Arguments
Dim objShortcut
Dim objShell : Set objShell = WScript.CreateObject("Wscript.Shell")
Set objShortcut =objShell.CreateShortcut(a(0))
objShortcut.TargetPath = a(1)
objShortcut.Description = a(2)
objShortcut.WorkingDirectory = a(3)
objShortcut.Save
cscript //nologo C:\Scripts\MakeShortcut.vbs "%userprofile%\Desktop\Mp3tag.lnk" "C:\Program Files (x86)\Mp3tag\Mp3tag.exe" "Musik" "%userprofile%\Desktop"
bastla
Hallo bastla,
Vielen Dank für deine Hilfe. Muy rapido....
Verstehe ich das richtig das ich diese VBSScript,
nur noch mit einem anderem Programmnamen aufrufen brauch?
Also z.B.:
Mp3tag.exe
notepad.exe
firefox.exe
und die links werden dann nach und nach auf dem Desktop erstellt?
Ich tue mich mit VBS sehr schwer. Dabei soll es recht einfach sein.
Also noch vielen Dank für deine Hilfe.
Mfg Tom
Vielen Dank für deine Hilfe. Muy rapido....
Verstehe ich das richtig das ich diese VBSScript,
nur noch mit einem anderem Programmnamen aufrufen brauch?
Also z.B.:
Mp3tag.exe
notepad.exe
firefox.exe
und die links werden dann nach und nach auf dem Desktop erstellt?
Ich tue mich mit VBS sehr schwer. Dabei soll es recht einfach sein.
Also noch vielen Dank für deine Hilfe.
Mfg Tom
Hallo Tommylik!
Grüße
bastla
Verstehe ich das richtig das ich diese VBSScript,
nur noch mit einem anderem Programmnamen aufrufen brauch?
Es müssen beim Aufruf immer alle 4 Parameter (Verknüpfungsdatei, Programmdatei, Beschreibung und "Ausführen in"-Ordner) übergeben werden (stehen dann im Script in a(0) bis a(3)) angegeben werden - ansonsten: janur noch mit einem anderem Programmnamen aufrufen brauch?
Grüße
bastla
Hallo bastla,
Vielen Dank für deine Hilfe da bin ich ja auf dem richtigem Weg.
Ich hab mir eine Textdatei erstellt und darin werden dann die Programme über folgenden Code aufgerufen.
Funktioniert gut so, aber ein Sache stört mich und zwar ist das die Textdatei.
Die Zeilen darin sind sehr lang. Sehr unübersichtlich, da schleicht sich schnell ein Fehler hinein.
Vielleicht hast du ja eine bessere Idee. Ansonsten ist das hier OK.
Vielen Dank noch mal für deine Hilfe.
MFg Tom
Vielen Dank für deine Hilfe da bin ich ja auf dem richtigem Weg.
Ich hab mir eine Textdatei erstellt und darin werden dann die Programme über folgenden Code aufgerufen.
@echo off & setlocal
cls
for /F "delims=" %%i in (d:\Internet_Seiten\Batch\programme.txt) do cscript //nologo d:\Internet_Seiten\Batch\ms.vbs %%i
"C:\Users\Tom\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Mp3tag.lnk" "C:\Program Files (x86)\Mp3tag\Mp3tag.exe" Musik "C:\Documents and Settings\vwuser\Application Data\Microsoft\Internet Explorer\Quick Launch"
Funktioniert gut so, aber ein Sache stört mich und zwar ist das die Textdatei.
Die Zeilen darin sind sehr lang. Sehr unübersichtlich, da schleicht sich schnell ein Fehler hinein.
Vielleicht hast du ja eine bessere Idee. Ansonsten ist das hier OK.
Vielen Dank noch mal für deine Hilfe.
MFg Tom
Hallo Tommylik!
Du könntest die Pfade in der Textdatei verkürzen, indem Du (vorhandene oder im Batch erstellte) Variable benutzt - zB (ungetestet):
Im Batch müsstet Du dann sicherstellen, dass %QL% und %P86% vorweg den richtigen Wert erhalten:
Grüße
bastla
Du könntest die Pfade in der Textdatei verkürzen, indem Du (vorhandene oder im Batch erstellte) Variable benutzt - zB (ungetestet):
"%appdata%\%QL%\Mp3tag.lnk" "%P86%\Mp3tag\Mp3tag.exe" Musik "%appdata%\%QL%"
@echo off & setlocal
set "P86=C:\Program Files (x86)"
set "QL=Microsoft\Internet Explorer\Quick Launch"
for /f "delims=" %%i in (d:\Internet_Seiten\Batch\programme.txt) do call cscript //nologo d:\Internet_Seiten\Batch\ms.vbs %%i
bastla