Considere usar AppleScript en lugar de, o en combinación con, Automator. Automator no encaja fácilmente en los flujos de trabajo que requieren ramas condicionales.
Las ramas condicionales son pasos dentro del flujo de trabajo que realizan una acción dependiendo de algún estado o situación. En este caso, si el archivo de video está presente en la carpeta de destino.
AppleScript puede manejar este tipo de tarea; al igual que un script en perl u otro lenguaje de scripting.
Consulte ¿Puede Automator derivarse según el valor de una variable o el resultado de un paso? para un enfoque basado en script combinado con Automator.
Enfoque de script
Para tareas como esta, prefiero lenguajes de script como perl. A continuación encontrará un script que lo ayudará a comenzar, o que otros pueden desarrollar. No está probado, así que trate con cuidado:
#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename; # for fileparse
# WARNING: lack of error checking
# Use: ./move_srt.pl <path to source folder> <path to destination folder>
my $source_path = shift;
my $destination_path = shift;
# Get the video file names - without their 3 or 4 letter suffixes
my @destination_video_files = glob($source_path.'/*');
my %named_video_files = map { $_ => fileparse($_,qr/\..{3,4}/); } @destination_video_files;
# Get a list of srt files
my @source_srt_files = glob($source_path.'/*\.srt');
foreach my $source_srt_file (@source_srt_files) {
print "[Encountered] $source_srt_file\n";
# Strip suffix and check if video exists with same name
my $named_srt_file = fileparse($source_srt_file,qr/\.srt/);
if (exists($named_video_files{$named_srt_file})) {
# Move the matching srt File
system('/bin/mv '.$source_srt_file.' '.$destination_path);
print "[Matched] $source_srt_file\n";
} else {
print "[Unmatched] $source_srt_file\n";
}
}