Estoy tratando de hacer lo siguiente en un flujo de trabajo de Automator:
Aquí hay una muestra de los nombres de archivo que estoy tratando de renombrar:
El delimitador por el que estoy dividiendo es el signo de dólar "$" para crear los siguientes archivos nuevos:
Estos son los formatos de nombre de archivo que me gustaría que el automatizador continuara procesando.
Gracias a otro usuario, pude llegar tan lejos. Sin embargo, mi flujo de trabajo falla en el paso 5. Recibo la siguiente advertencia:
La acción "Renombrar elementos del buscador: Agregar texto" no se proporcionó con los datos requeridos.
Aquí está la configuración del flujo de trabajo en Automator:
Con el AppleScript a continuación:
on run {input, parameters}
try
set AppleScript's text item delimiters to "$"
set output to {}
repeat with anItem in input
set the end of output to text item 2 of (anItem as text)
end repeat
set AppleScript's text item delimiters to {}
return output
on error eStr number eNum
display dialog eStr & " number " & eNum buttons {"OK"} ¬
default button 1 with icon caution
set AppleScript's text item delimiters to {}
return
end try
end run
Pensé que al devolver la salida, el siguiente flujo de trabajo continuaría con los cambios necesarios. Veo que no es así.
¿Cómo devuelvo mi salida para que el siguiente elemento del flujo de trabajo pueda usarla y continuar con el cambio de nombre del archivo?
Todavía no está del todo claro qué es lo que está tratando de lograr, sin embargo, aquí hay un flujo de trabajo de ejemplo que puede resultarle útil.
$
en el nombre base del nombre de archivo .Código para la acción Ejecutar script de Shell :
cd "$(dirname "$1")"
for f in "$@"
do
mv "$(basename "$f")" "$(printf "$(basename "$f")" | sed -E 's/^.*\$//')"
done
echo "$(ls -1)"
echo "$(ls -1)"
comando no es realmente necesario en este caso de uso y se usó en este ejemplo solo para mostrar que los nombres de los archivos se cambiaron y mostrar eso en el panel Resultados .Actualización: nuevo código para la acción Ejecutar secuencia de comandos de Shell : utilice este código en lugar del código original anterior. Lo he modificado para que sea un poco más eficiente tener que llamar una vez, en lugar de dos veces. (No actualicé el código en la acción Ejecutar script de Shell en la imagen original a continuación).basename
cd "$(dirname "$1")"
for f in "$@"; do
n="$(basename "$f")"
mv "$n" "$(printf "$n" | sed -E 's/^.*\$//')"
done
echo "$(ls -1)"
Nota: Consulte también el segundo flujo de trabajo de Automator , que se muestra después de la imagen original a continuación, que niega la necesidad del Segundo segmento:, ya que su acción Ejecutar script de shell está codificada para manejar el cambio de nombre que tiene lugar en el segundo segmento, agregando e intercambiando por . prefix-
-proc
-suffix
Consulte la imagen a continuación para ver otras configuraciones aplicables de las acciones de Automator , como se muestra en el OP.
Como puede ver en la imagen a continuación, todas las acciones se completaron con éxito y según lo programado, y el panel Resultados de cada acción muestra los resultados de su acción .
Para ser utilizado en lugar del primer flujo de trabajo de Automator.
Código para la acción Ejecutar script de Shell en el segundo flujo de trabajo de Automator:
p='prefix-'
s='-suffix'
t='-proc'
cd "$(dirname "$1")"
for f in "$@"; do
n="$(basename "$f")"
if [[ $n =~ ^.*\$.*${t}\.${n##*.} ]]; then
mv "$n" "${p}$(printf "${n%.*}" | sed -E -e "s/$t/$s/" -e 's/^.*\$//').${n##*.}"
fi
done
echo "$(ls -1)"
for
ciclo , ya que ese es el único código que debe necesitar/querer modificar según sea necesario (y no es necesario que estén dentro del for
ciclo ). No actualicé la imagen del flujo de trabajo de Automator para reflejar esta actualización.Si lo necesita/desea, podría agregar un segundo segmento diferente a este segundo flujo de trabajo , pero el código en esta acción Ejecutar script de Shell elimina la necesidad de las dos acciones Renombrar elementos del buscador: Agregar texto que estaban en el segundo segmento del primero ( original), flujo de trabajo .
Nota: Actualizaré esto con una explicación de lo que está haciendo el código en la acción Ejecutar script de Shell , tan pronto como pueda.
p
, s
y t
según sea necesario/querido. El código restante no debería necesitar ser modificado.for
bucle , ya que ese es el único código que debería necesitar/querer modificar según sea necesario (y no lo hacen necesita estar dentro del for
bucle ). No actualicé la imagen del flujo de trabajo de Automator para reflejar esta actualización.
usuario3439894
(anItem as text)
, .usuario3439894
a new file$SG789.jpg
aSG789.jpg
.usuario3439894
Yazmín
Yazmín
usuario3439894