Thread Starten von Programmen nach Erstellung eines Files
(14 answers)
Opened by giordani at 2010-07-07 11:12
Wenn die Scripte so alleine stehen kann man das aber auch etwas eleganter schreiben.
createCount.pl: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #!/usr/bin/perl use strict; use warnings; # alle nötigen Parameter von der Kommandozeile lesen: die("Nicht genug Argumente!\n") if(@ARGV<2); # Arbeitsverzeichnis lesen my $ordner = shift(@ARGV); # Datei-Namen lesen my @files = @ARGV; # Ordner muss existieren! die("Arbeitsverzeichnis existiert nicht!\n") if(!-d $ordner); # Es muss mindestens eine Datei angeben sein die("Keine Dateien Angeben!\n") if(!@files); # alte Dateien löschen. for my $file (glob("$ordner*")){ if(-f $file){ unlink($file) or die("Konnte Datei $file nicht löschen! ($!)\n"); } else{ die("Kann $file nicht löschen! Es ist keine Datei!\n"); } } # neue leere Dateien anlegen for my $file (@files) { open(my $fh, '>', $ordner.$file) or die("Kann Datei $ordner$file nicht anlegen ($!)\n") close($fh); } print "number of files: ".scalar(@files)."\n"; Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 #!/usr/bin/perl use strict; use warnigs; my $ordner = "E:/Test/testordner/"; my @files=("test1.txt","test2.txt"); print "Jetzt createCount.pl gestartet.\n"; system('createCount.pl', $ordner, @files)==0 or die(qq(Konnte "createCount.pl $directory @files" nicht erfolgreich ausführen! $!)); Wie ich das Problem lösen würde: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #!/usr/bin/perl use strict; use warnings; use File::Spec::Functions qw( catdir catfile ); # Arbeitsverzeichnis, wo die Programme liegen my $ordner = 'E:/Benutzer/06simulation/proc'; # Logfile das analysiert werden soll my $logfile='log.txt'; # timeout my $maxwait=120; # Sekunden maximal auf Datei warten runn('01runInitElthetaBatchScript.ahk'); # nach dem "init" ein paar Sekunden warten um sicher zu sein, # dass die Einstellungen übernommen wurden: sleep(2); runn('02runBatchScript.ahk'); # so lange warten bis die Datei existiert, # oder die Zeit abgelaufen ist. my $timeout=time()+$maxwait; until(-e $logfile) { # immer eine Sekunde warten sleep(1); # Abbruch wenn die maximale Zeit gewartet wurde. die("$logfile wurde nach $timeout Sekunden noch nicht erstellt!\n") if($timeout <= time()); } # noch kurz waren um sicher zu stellen, das die Datei vollständig geschrieben wurde. sleep(1); runn('03procInitElthetaOut.pl'); #################################################### # Funktionen sub runn { my $cmd=shift; my $prog=catfile( $ordner, $cmd); # Fuehre programm aus: system( $prog ) == 0 or die qq(Programm "$prog" brach ab: $!\n); } Last edited: 2010-07-08 09:57:03 +0200 (CEST) |