Schrift
[thread]7163[/thread]

Datei per Drag&Drop im PERL-Skript verarbeiten

Leser: 2


<< |< 1 2 3 4 5 >| >> 46 Einträge, 5 Seiten
_Sietsch_
 2005-07-28 12:19
#56709 #56709
User since
2005-05-15
26 Artikel
BenutzerIn
[default_avatar]
Moin,

ich möchte eine Datei mit der Maus auf ein PERL-Skript ziehen und dann soll das Skript so mit der Datei arbeiten, als hätte man im Skript selbst den Dateinamen genannt.
Bsp:

- gecko.jpg mit der Maus auf den Icon des Skripts resize.pl ziehen. Das Skript erstellt dann automatisch eine verkleinerte Version der Datei

- index.html mit der Maus auf den Icon des Skripts transfer.pl ziehen. Das Skript sendet diese Datei dann automatisch zu einem FTP-Account.

Kann mir jm. helfen??
Danke,
_

Sietsch_.
Ronnie
 2005-07-28 12:50
#56710 #56710
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Unter Windows legst du eine Batchdatei an: "perl script.pl %1" (wenn ich mich Recht erinnere), dann kannst du eine Datei droppen und ihr Pfad müsste in AGRV stehen. Bin mir nicht mehr so sicherm habe das aber glaube ich irgendwann mal so gelöst.\n\n

<!--EDIT|Ronnie|1122541284-->
dominicn
 2005-07-28 12:57
#56711 #56711
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Ich habs grad mal ausprobiert: Einfach eine Verknüpfung irgendwo hin legen (zum Beispiel auf den Desktop). Als Ziel perl.exe Pfad-Zum-Script.pl angeben.
Der Dateiname steht dann in $ARGV[0]
GwenDragon
 2005-07-28 12:58
#56712 #56712
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Bei ActivePerl gibt es das Programm Perl2bat, das aus einem Perlskript eine Batch erstellt. Diese kannst du dann als Drap&Drop benutzen.
_Sietsch_
 2005-07-28 13:15
#56713 #56713
User since
2005-05-15
26 Artikel
BenutzerIn
[default_avatar]
Hi.

@dominicn
kannst du mir mal die genaue Syntax von "Als Ziel perl.exe Pfad-Zum-Script.pl angeben angeben??

@GwenDragon
Das heißt ich lasse mir mittels Perl2bat aus meinem Skript eine Batch-datei erstellen. Und auf diese Datei kann ich dann meine Dateien ziehen?
Wie muss aber dann der Code im Skript aussehen?
Kommt die Datei duch Benutzereingabe, dann sieht das ja irgendwie so aus:
Code: (dl )
1
2
3
print "Dateipfad und Name eingeben: ";
$in = <STDIN>;
...

Wenn die Datei nun aber gedropt wird muss das ja anders aussehen...

So wie bei C++ z.B. die main dann wie folgt aussieht:
Code: (dl )
1
2
3
void main(int argc, char* argv) {

}//main


Da steht ja dann im Vektor argv der Übergabeparameter...


Danke,
_Sietsch_
GwenDragon
 2005-07-28 13:26
#56714 #56714
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Wenn in @ARGV etwas steht, dann holst du den/die Parameter aus @ARGV.
Ansonsten liest du aus stdin.
dominicn
 2005-07-28 14:16
#56715 #56715
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
[quote=_Sietsch_,28.07.2005, 11:15]@dominicn
kannst du mir mal die genaue Syntax von "Als Ziel perl.exe Pfad-Zum-Script.pl angeben angeben??[/quote]
Ich hab es so gemacht: Mit rechter Maustaste auf das Perlscript geklickt und dort ausgewählt: Senden an -> Desktop (Verknüpfung erstellen)

Dann hast du das Ding aufm Desktop. Dort rechte Maustaste -> Eigenschaften. In dem Fenster was du dann siehst gibt es ein Eingabefeld mit der Bezeichnung "Ziel:". Dort steht der Dateiname des Perl-Scripts drin. Davor schreibst du einfach noch den Pfad zum Perl-Interpreter, sodass dann insgesamt sowas steht wie z.B.:
Quote
C:\Perl\bin\perl.exe D:\Daten\Perl\test1.pl

Dann klickst du auf OK und kannst ab sofort das Perl-Script starten, indem du eine Datei per Drag&Drop draufziehst. Wenn dabei kein Konsolen-Fenster geöffnet werden soll, sondern alles im Hintergrund oder per Windows-GUI ablaufen soll, machst du beim Ziel aus perl.exe einfach wperl.exe
_Sietsch_
 2005-07-28 14:54
#56716 #56716
User since
2005-05-15
26 Artikel
BenutzerIn
[default_avatar]
OK @dominicn,

das klingt einfach.
Aber nach wie vor habe ich ein paar Probleme mir vorzustellen, wie die Datei, die ich auf das Skript ziehe verarbeitet werden soll.
Nehmen wir folgendes kleine Skript an:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
open (FILE, test.dat') or die "File could not be opened: $!\n";
while (<FILE>) {
$file[$i] = $_;
$i++;
}#while

$i = 0;
while ($i <= @file) {
print "$file[$i]\n";
}#while

Also ein kleines Skript, das eine datei einliest und sie im Konsolenfenster ausgibt.
Wie würde das aussehen, wenn der Name der Datei nicht im Quelltext steht, sondern eben per Dran&Drop kommt?

Vielen Dank,

_Sietsch_

PS: Was ich realisieren will ist Folgendes:
Ich will ein Skript schreiben, dass eine Datei (die mit der Maus auf den Icon des Skripts gezogen wird) per FTP zum Server transferiert... Das Skript is ne Kleinigkeit, nur hab ich keine Ahnung bez. des Dran&Drop\n\n

<!--EDIT|_Sietsch_|1122549273-->
GwenDragon
 2005-07-28 15:14
#56717 #56717
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
[quote=GwenDragon,28.07.2005, 11:26]Wenn in @ARGV etwas steht, dann holst du den/die Parameter aus @ARGV.
Ansonsten liest du aus stdin.[/quote]
@_Sietsch_
Wie ich schon schrieb, an das SKkript übergebene Parameter stehen in @ARGV.
GwenDragon
 2005-07-28 15:31
#56718 #56718
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;

my $arg;

if (@ARGV) {
$arg = join('#', @ARGV);
}
else {
$arg = <STDIN>;
chomp($arg);
}

print "\nArgumente sind: $arg\n";


1;
<< |< 1 2 3 4 5 >| >> 46 Einträge, 5 Seiten



View all threads created 2005-07-28 12:19.