Manejo de extensiones de nombre de archivo - bash vs oascript

1

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
    
pregunta Leonard 04.11.2018 - 21:39

1 respuesta

1

Como su variable de shell $file siempre tendrá una extensión de archivo intacta, debe usar la propiedad path para Preview ' document , que contiene la ruta completa del archivo de el archivo abierto, incluida 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 el sleep de retardo. Otra forma de hacerlo 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áneo, y la propiedad displayed name usa específicamente el nombre como se muestra en Finder , con o sin su extensión. Por lo tanto, coincide con la propiedad name del documento Vista previa .

    
respondido por el CJK 04.11.2018 - 22:02

Lea otras preguntas en las etiquetas