Ziel, Dateien sollen abhängig von deren Dateiendungen mit einem zugewiesenen Programm gestartet werden. Quasi ein registry-unabhängiges file-extension-assignment.
Verwaltet werden die Extension-Application-Paarungen in einem assoziativen Array.
Anwendung: im Windows Explorer werden beliebige Dateien ausgewählt (eine *.txt,*.ahk-Datei sollte schon dabei sein!).
Hotkey betätigen: F12.
Im Ergebnis wird interessanterweise für *.txt wie erwartet Run notepad.exe <dateipfad> angezeigt, für *.ahk, *.csv jedoch ausschließlich der Dateipfad Run <dateipfad>!?
Was übersehe ich hier?
Code: Select all
#SingleInstance, Force
fIndex:= {"xls":"excel.exe"
,"txt":"notepad.exe"
,"bmp":"paint.exe"
,"ahk":"autohotkey.exe"
,"csv":"notepad.exe"}
F12::
clipboard:=""
Send +{F10}p ; ruft explorer kontextmenü auf und kopiert die pfade von ausgewählten dateien
ClipWait ; ...in die Zwischenablage
files := StrReplace(clipboard,"""","") ; entfernt alle Anführungszeichen aus den (multiplen) pfadangaben
file := StrSplit(files,"`n") ; (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
MsgBox % ext "`nRun " . fIndex[ext] . " " . file[A_Index]
}
Return