3 votos

Tratar con extensiones de nombre de archivo - bash vs oascript

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 forma sólida 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
 

3voto

qarma Puntos 71

Como su variable de shell $file siempre tendrá una extensión de archivo en el tacto, usted necesita usar el path de la propiedad para la vista previa's document, que contiene la ruta completa del archivo del archivo abierto, incluyendo la extensión de 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 de retraso. Otra manera en que usted podría hacer es enumerar los archivos en AppleScript en su lugar:

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ánea, y el displayed name propiedad específicamente utiliza el nombre como se muestra en el Finder, con o sin extensión. Por lo tanto, coincide con la name de la propiedad de la vista previa del documento.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X