Hallo,
es ist schon gut 20 Jahre her, als ich mich mit AutoIT beschäftigt hatte.
Leider kann ich nichts mehr und benötige eure Hilfe.
Ich möchte Programmverknüpfungen erstellen.
Dabei müssen Ordnernamen in einem Verzeichnis ausgelesen werden. Die einzelnen Verknüpfungen tragen später die jeweiligen Ordnernamen und als zu startendes Programm wird der Ordnername als Parameteraufruf weitergegeben.
Beispiel1:
Name der Verknüpfungsdatei: ErsterName
Ziel der Verknüpfung: "C:\Program Files\Mozilla Firefox\firefox.exe" -P "ErsterName"
Beispiel2:
Name der Verknüpfungsdatei: ZweiterName
Ziel der Verknüpfung: "C:\Program Files\Mozilla Firefox\firefox.exe" -P "ZweiterName"
Hintergrund dieser Aktion:
Ich arbeite mit unzähligen portablen Versionen von Firefox.
Ich möchte nun alle portablen Firefox Kopien als jeweiliges Profil für meine installierte Firefox Instanz anlegen.
Der gesamte Ablauf unterteilt sich in drei Schritten.
1. Firefox Profilmanager - neues Profil erstellen
2. Firefox Portable Versionen bestehende Profile importieren. Da werde ich vielleicht noch herumprobieren.
3. Startverknüpfungen erstellen
Schritt 1 ist fast fertig, erste Versuche funktionieren schon, aber mit ein paar Problemen.
Schritt 2 kann ich im schlimmsten fall manuell durchführen, wird mir aber auch stunden an Zeit kosten alle Profile manuell zu kopieren.
Schritt 3 Die Programmverknüpfungen müssen automatisch erstellt werden.
Schritt3, Erstellung der Programmverknüpfungen:
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
;#include <WinAPIFiles.au3>
#include <File.au3>
#include <Array.au3>
; Pfad zum Firefox-Ordner
Local $sourceFolder = "E:\Portable\Browser\Firefox\"
; Pfad zum Zielverzeichnis für die Verknüpfungsdateien
Local $destinationFolder = "C:\Users\Hans\Desktop\Firefox Profile\"
; Liste der Unterordner im Quellverzeichnis
Local $folders = _FileListToArray($sourceFolder, "*", $FLTA_FOLDERS)
; Firefox-Exe-Pfad
Local $firefoxExePath = "C:\Program Files\Mozilla Firefox\firefox.exe"
; Schleife über alle Unterordner
For $i = 1 To $folders[0]
; Verknüpfungsdateiname
Local $linkName = $folders[$i]
; Ziel-Pfad für die Verknüpfung
Local $targetPath = $firefoxExePath & ' -P "' & $linkName & '"'
; Verknüpfung erstellen
FileCreateShortcut($targetPath, $destinationFolder & $linkName & ".lnk")
Next
MsgBox($MB_ICONINFORMATION, "Fertig", "Verknüpfungen wurden erstellt und im Zielverzeichnis abgespeichert.")
Alles anzeigen
Leider funktioniert das nicht wie gewünscht, an die erstellten Verknüpfungen werden Zielpfad, Parameter und Arbeitsverzeichnis nicht weitergereicht.
Ich hoffe das Ihr mir helfen könnt.
Edit:
FileCreateShortcut($targetPath, $destinationFolder & $linkName & ".lnk", $sourceFolder)
nun wird das Arbeitsverzeichnis (ausführen in:) mit abgespeichert.
$targetPath wird nicht richtig übernommen.
Wenn ich folgendes zum Testen angebe, wird mir der Pfad mit Parameter in die Verknüpfungsdatei gespeichert, es werden jedoch die Anführungszeichen nach der Pfadangabe und vor dem Parameter nicht mitgegeben.
$firefoxExePath = "C:\Program Files\Mozilla Firefox\firefox.exe" & "'-P '" & "Onlineshop"
Resultat: "C:\Program Files\Mozilla Firefox\firefox.exe -P Onlineshop"
folgendes wäre korrekt: "C:\Program Files\Mozilla Firefox\firefox.exe" -P "Onlineshop"
Leider komme ich nicht weiter.
LG Hans