runWith.ahk

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

runWith.ahk

Post by BoBo » 18 May 2022, 07:00

Hintergrund dieses scripts ist die Anfrage von [hier] bzgl der Ausführung von batch files in Kombination mit AHK bei restriktiertem Zugang auf einem Arbeits-PC. Dabei scheint mir die fehlende Dateizuordnung (*.ahk) von AHK-scripten zum AHK-Interpreter (autohotkey.exe) der maßgebliche Vorteil einer "AHK-Installation" im Vergleich zur "portablen Lösung" bei welcher AHK lediglich entpackt wird, und die Zuordnung manuell konfiguriert werden muß (correct me if I'm wrong). Wird wie im vorgenannten Fall ein dafür notwendiger registry-Eintrag bzgl. Dateizuordnung verwehrt, wirds nötigend.

Das script agiert dabei als 'ausgelagerte' registry für Dateizuordnungen. HTH 8-)

Code: Select all

#SingleInstance, Force

assoc := {"xlsx"  :"excel.com"
         ,"txt"   :"notepad.exe"
         ,"bmp"   :"paint.exe"
         ,"ahk"   : A_AHKPath
         ,"ini"   :"C:\_MyPrograms\Notepad2\Notepad2.exe"}

F12::                                                          ; Mit Betätigung der F12-Taste, nach der Selektion von Dateien im Windows Explorer..
   clipboard:=""
   Send +{F10}p                                                ; Aufruf des Kontextmenüs mit der Option "als Pfad kopieren". Kopieren der ausgewählten Dateipfade 
   ClipWait                                                    ; ..in die Zwischenablage
   files := StrReplace(clipboard,"""","")                      ; entfernt alle Anführungszeichen aus den (multiplen) Pfadangaben
   file := StrSplit(files,"`n","`r")                           ; (multiple) Pfade in array transferieren
   Loop % file.Count()                                         ; einzelne Pfade prozessieren
         {  SplitPath,% file[A_Index],,, ext                   ; liefert die ext (z.B. 'ahk') aus dem Dateipfad
            Run % !(assoc[ext]="")                             ; wenn Dateiendung gefunden wurde..
                  ? assoc[ext] . " """ . file[A_Index] . """"  ; Dateipfad aufrufen (ausführende Anwendung wird aus array ermittelt), ansonsten.. 
                  :  """" . file[A_Index] . """"               ; Dateipfad aufrufen (das OS bestimmt die ausführende Anwendung)
         }
   Return
PS. falls sich das final als "Durch die Brust ins Auge"-Lösung erweist, um so besser. Bin neugierig auf weitaus bessere (bevorzugt einfacherere) Lösungen ;)

Return to “Skripte und Funktionen”