Nach einigen anderen Arbeiten komme ich wieder auf Deinen letzten Tipp zurück. Ich habe den etwas verändert und versucht, ihn zu einer Art Filter umzubauen, aber da hängt es noch.
Code: Select all
+^f::
ActiveWindow := WinExist("A")
ShellWin := 0
For Win In Shell.Windows {
If (Win.HWND = ActiveWindow) {
ShellWin := Win
Break
}
}
InputBox, SuchString, , Hier bitte Suchstring eingeben, , 225, 125
If !(ShellWin)
Return
If !(ShellWin.Document.SelectedItems.Count = 1) {
MsgBox, 16, Fehler!, Bitte genau eine Datei auswählen!
Return
}
FilePath := ShellWin.Document.SelectedItems.Item[0].Path
MsgBox, %FilePath%
I := 1
For Item In ShellWin.Document.Folder.Items {
;~ If Item.IsFolder() ; das Element ist ein Ordner -> überspringen
;~ Continue
;~ else
If InStr(Item.path, SuchString)
MsgBox, 0, % "Datei " . I++, % Item.path
else
MsgBox, %SuchString% nicht gefunden!
If (I > 10) ; nach spätestens 10 Dateien ist Schluss
Break
}
Return
So wie das jetzt ist, findet es die Dateien mit dem String darin (5 Stück sind das), die anderen aber nicht. Stattdessen werden diese Dateien ein zweites Mal aufgeführt, bis die 10 Schleifendurchläufe voll sind. Habe ich die Pfade oder Namen dort falsch angegeben oder benannt? Ich hab das Gefühl, daß es daran liegen könnte.
Außerdem mußte ich die Prüfung If Item.IsFolder() auskommentieren, weil das continue alle weiteren Befehle ignoriert und nicht nur den nächsten überspringt. Wie löst man dieses Problem?
Viele Grüße von Meister Lampe