Tengo un script que cierra las ventanas abiertas, pero solo funciona cuando he habilitado la preferencia "mostrar todas las extensiones de nombre de archivo" del Finder. ¿Existe una manera robusta de lograr esto independientemente del estado de la preferencia de extensión de nombre de archivo? Supongo que podría intentar cerrar el archivo con y sin la extensión, pero esa es una solución fea.
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
Como su variable de shell $file
siempre tendrá una extensión de archivo intacta, debe usar la path
propiedad para Preview 's document
, que contiene la ruta completa del archivo abierto, incluida la extensión del archivo:
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
Esto es lento, sin embargo, incluso sin la sleep
demora. Otra forma de hacerlo es enumerar los archivos en AppleScript:
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
Esto es casi instantáneo y la displayed name
propiedad usa específicamente el nombre tal como se muestra en Finder , con o sin su extensión. Por lo tanto, coincide con la name
propiedad del documento de vista previa .