AppleScript: ¿Cómo buscar en la carpeta los archivos y mostrar los resultados en el Finder?

2

Estoy intentando crear un servicio basado en Automator que busca en mi computadora el texto seleccionado. (Cuando digo "mi computadora, " me refiero específicamente a Macintosh HD, no This Mac , porque This Mac incluye discos duros externos.)

Me gustaría que los resultados de la búsqueda aparezcan en una nueva ventana del Finder.

¿Es posible lograr esto mediante programación en Applescript o en un script de shell? Esto no parece posible, pero sería ideal.

Si esto no se puede hacer realmente de manera programática, entonces estaría de acuerdo en lograr esto "manualmente". Aquí hay un ejemplo de cómo podría manifestarse esa ruta:

tell application "Finder"
    activate
    open (POSIX file "/")
end tell

tell application "System Events"
    keystroke "f" using command down
    keystroke input
end tell

Sin embargo, no sé cómo cambiar el directorio de búsqueda. (Estoy tratando de evitar los clics en el mouse del script). De forma predeterminada, cuando un usuario inicia una búsqueda en el Finder (por ejemplo, cuando el usuario presiona ⌘ comando + F ), el directorio de búsqueda es "Este Mac", independientemente del directorio de la ventana del Finder en el que se llamó la función de búsqueda.

    
pregunta rubik's sphere 09.12.2017 - 10:32

1 respuesta

2

Si no te importa cambiar una preferencia particular de Finder , es decir, Al realizar una búsqueda: , lo siguiente funcionará.

Primero, en Finder > Preferencias ... > Avanzado , configure Al realizar una búsqueda: para: Buscar en la carpeta actual

A continuación, cree un Automator Flujo de trabajo del servicio con su configuración predeterminada (el Servicio recibe el texto seleccionado en cualquier aplicación) y agregue un Ejecutar AppleScript < em> action , sustituyendo el código predeterminado por el código a continuación:

on run {input, parameters}
    tell application "Finder"
        activate
        open (POSIX file "/")
    end tell
    delay 0.5 -- # Adjust as necessary or comment out/remove if not needed.
    tell application "System Events"
        keystroke "f" using command down
        keystroke input as text
        keystroke return
    end tell
end run

Guarde el Automator Flujo de trabajo del servicio , por ejemplo. Buscar texto seleccionado en el buscador

Si desea agregar una prueba programática y un cambio de preferencia para Al realizar una búsqueda: se establece en Buscar en la carpeta actual , luego agregue el siguiente código directamente después de on run {input, parameters} y antes del bloque tell application "Finder" .

if (do shell script "defaults read com.apple.finder FXDefaultSearchScope") is not "SCcf" then
    do shell script "defaults write com.apple.finder FXDefaultSearchScope SCcf; killall Finder"
    delay 1 -- # Adjust as necessary or comment out/remove if not needed.
end if

Una alternativa, es dejar la preferencia predeterminada Finder para Al realizar una búsqueda: a Buscar en esta Mac y hacer lo siguiente:

  • Abre una nueva ventana Finder en Macintosh HD .
  • Presiona: F
  • En la barra Buscar , haga clic en el botón "Macintosh HD" .
  • En la barra Buscar , haz clic en el botón Guardar .

Sigue para guardar la búsqueda. En este caso, por ejemplo:

  • Guardar como: Buscando “Macintosh HD”
  • Donde: Búsquedas guardadas
  • [] Agregar a la barra lateral (sin marcar)

En la Ejecutar AppleScript del Automator Flujo de trabajo del servicio , reemplace open (POSIX file "/") con el siguiente ejemplo código , ajustado para su sistema y cómo / dónde guardó la búsqueda:

open POSIX file "/Users/me/Library/Saved Searches/Searching “Macintosh HD”.savedSearch"

El ejemplo AppleScript código sería:

on run {input, parameters}
    tell application "Finder"
        activate
        open POSIX file "/Users/me/Library/Saved Searches/Searching “Macintosh HD”.savedSearch"
    end tell
    delay 0.5 -- # Adjust as necessary or comment out/remove if not needed.
    tell application "System Events"
        keystroke "f" using command down
        keystroke input as text
        keystroke return
    end tell
end run

Este último método deja la configuración predeterminada solo en Finder y logra el objetivo sin usar los clics del mouse ni los botones del Automator flujo de trabajo del servicio .

Nota: el ejemplo AppleScript código es solo eso y puede requerir delay comandos adicionales, según corresponda / necesitado, por ejemplo entre los comandos keystroke como / si es necesario.

    
respondido por el user3439894 09.12.2017 - 12:32

Lea otras preguntas en las etiquetas