2 votos

¿Cómo puedo guardar el nombre de la captura de pantalla sustituyendo el espacio en blanco por `_`?

Cuando guardo una captura de pantalla, el nombre de archivo actual se muestra de la siguiente manera: Screen Shot 2017-03-01 at 10.05.05.png . En lugar de utilizar un carácter de espacio en blanco, ¿podemos cambiarlo por otro carácter como _ ?

Ejemplo de nombre de archivo: Screen_Shot_2017-03-01_at_10.05.05.png

Tenga en cuenta que en los últimos MacOS no hay <key>%@ %@ at %@</key> <string>%@ %@ at %@</string> en el ScreenCapture.strings archivo.

Relacionado: Guardar captura de pantalla con nombre personalizado

1voto

wch1zpink Puntos 11

He aquí una posible solución que puede interesarle. Utilizando Autómata puede crear un Carpeta Acción que renombrará los archivos añadidos a la carpeta especificada, cuyos nombres contengan espacios en blanco, con guiones bajos.

En primer lugar, abra Automator.app y crear un nuevo Carpeta Acción . A continuación, añada un Ejecutar Shell script al flujo de trabajo e inserte el siguiente código. La siguiente imagen le mostrará lo que debe hacer.

for f in "$@" ;do echo "$f" |mv "$f" "$(sed 's@ @_@g')" ;done

enter image description here

A continuación, guarde y asigne un nombre a su nuevo Carpeta Acción .

Después de eso, todo lo que necesitas hacer es abrir el Carpeta Acción Setup.app y adjunte su nueva Acción de carpeta a la carpeta de destino.

enter image description here

El único problema es que con el método anterior, cada archivo añadido a esa carpeta será renombrado si hay espacios en los nombres de archivo... No sólo los archivos de captura de pantalla.


Ahora aquí está un poco de una solución diferente si usted fuera a tener ya una carpeta con un montón de archivos, incluyendo los archivos de captura de pantalla con espacios en sus nombres, y sólo desea cambiar el nombre de los archivos de captura de pantalla con espacios en sus nombres, dejando todo lo demás sin tocar Puede pegar y ejecutar este código siguiente en script Editor.app que le pedirá que elija una carpeta y luego renombrará los archivos de captura de pantalla con espacios en sus nombres, dentro de esa carpeta.

activate
set chosenFolder to quoted form of POSIX path of (choose folder)

try
    do shell script "cd " & chosenFolder & ¬
        " ;for f in Screen* ; do echo \"$f\" |mv \"$f\" \"$(sed 's@ @_@g')\" ;done "
end try

1voto

Joel Puntos 112

A zsh script:

Este script es una solución mínima para renombrar todas las capturas de pantalla de un directorio para reemplazar cada espacio con un guión bajo ( _ ).

#!/bin/zsh
# shotfnmv.sh                  # FILE NAME FOR THIS SCRIPT
cd $HOME/Desktop/screenshots2  # CHOOSE YOUR FOLDER
for afile in *.png             # CHOOSE YOUR FORMAT; IF NOT .png
do
    if [[ $afile == "Screenshot "* || $afile == "Screen Shot "* ]]; then
      newfilenm=$(echo $afile | sed 's/[[:blank:]]\{1,\}/_/g')
      mv $afile $newfilenm
    fi
done

He optado por utilizar el nativo (Apple) sed ( editor de flujo ) utilidad para realizar la sustitución; cada espacio [[:blank:]] se sustituirá por un guión bajo _ el resultado se almacena en la variable newfilenm . El nombre del archivo ( afile ) se renombrarán (utilizando mv ) a newfilenm por lo que el nombre original del archivo desaparecerá después de ejecutar este script.

Sólo se renombrarán aquellos archivos que coincidan con uno de los dos criterios, por lo que si guardas archivos con "nombres personalizados" en la misma carpeta, este script no debería renombrarlos. He utilizado dos criterios ( "Screenshot "* o "Screen Shot "* ) para esta pantalla porque sé que en Ventura la palabra única Screenshot en lugar de la palabra dual Screen Shot tal y como está en su sistema.

Una cuestión logística:

Tenga en cuenta que esta solución le deja un problema logístico por resolver: ¿Cómo puedo ejecutar este script cuando sea necesario?

No he abordado esta cuestión aquí porque no me lo has preguntado específicamente, pero voy a esbozar un par de enfoques. Puedes optar por hacer otra pregunta después de revisar las alternativas.

  • Utilice la watch comando

watch es una utilidad de Linux/Unix que puede detectar cuándo se añade o cambia un archivo en un directorio designado, y esto puede utilizarse para desencadenar otra acción (por ejemplo, ejecutar el script anterior). No está disponible de forma nativa en MacOS, pero se puede obtener a través de cualquiera de los gestores de paquetes de terceros de uso común: MacPorts o HomeBrew.

  • Configurar un "Agente de Usuario" para que se ejecute bajo launchd

Utilizo una aplicación de terceros llamada LaunchControl para este tipo de cosas, pero también se puede utilizar la herramienta nativa launchctl si te inclinas por el masoquismo :) LaunchControl proporciona una watch -como que lo hace muy fácil. LaunchControl no es gratuito, pero no es muy caro y merece la pena, en mi opinión.

  • Ejecuta el script de forma continua con sleep

No me gusta la idea, me parece un despilfarro y una ineficacia, pero es bastante fácil. Hay un hilo sobre SO en el que se explica cómo hacerlo con algunas comparaciones con watch . Estrechamente relacionado está el uso del cron para programar las horas de ejecución del script.

EDITAR:

  • ¿Automator quizás?

Acabo de notar un nueva respuesta que puede proporcionar una respuesta más completa... Desafortunadamente, no estoy familiarizado con Automator, pero puede ser justo el billete?

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