Ich habe ein Skript, das offene Fenster schließt, aber es funktioniert nur, wenn ich die Finder-Einstellung "Alle Dateinamenerweiterungen anzeigen" aktiviert habe. Gibt es eine robuste Möglichkeit, dies unabhängig vom Status der Einstellung für die Dateinamenerweiterung zu erreichen? Ich nehme an, ich könnte versuchen, die Datei sowohl mit als auch ohne die Erweiterung zu schließen, aber das ist eine hässliche Lösung
cd somedir
for file in * ; do
echo file name is $file
osascript<<EOF
tell application "Preview"
close (every window whose name is "$file")
end tell
EOF
sleep 1
done
Da Ihre Shell-Variable $file
immer eine Dateierweiterung intakt hat, müssen Sie die path
Eigenschaft für Previewdocument
verwenden , die den vollständigen Dateipfad der geöffneten Datei einschließlich der Dateierweiterung enthält :
cd somedir
for file in * ; do
echo file name is $file
osascript<<EOF
tell application "Preview"
close (every document whose path ends with "$file")
end tell
EOF
sleep 1
done
Dies ist jedoch langsam, auch ohne die sleep
Verzögerung. Eine andere Möglichkeit besteht darin, die Dateien stattdessen in AppleScript aufzulisten:
osascript<<EOF
use sys : application "System Events"
use Preview : application "Preview"
script
property list : displayed name of every file ¬
in sys's folder "$somedir"
end script
repeat with f in result's list
tell Preview's document named f to if exists ¬
then close
end repeat
EOF
Dies geschieht fast augenblicklich, und die displayed name
Eigenschaft verwendet speziell den Namen, wie er im Finder angezeigt wird , mit oder ohne Erweiterung. Daher stimmt es mit der name
Eigenschaft des Vorschaudokuments überein .