2016-07-06 8 views
0

Ich möchte ein Perl-Skript schreiben, das es einem Benutzer ermöglicht, eine Datei aus Windows Explorer auszuwählen und diese als Eingabe für den Code im Perl-Skript zu verwenden (wie STDIN).perl - Öffnen Sie den Windows Explorer und wählen Sie die Eingabedatei für den Code

Also der Code würde Windows Explorer in das richtige Verzeichnis öffnen, der Benutzer würde dann auf ihre Datei klicken (auswählen), und dann würde das Skript seine Aufgabe in der ausgewählten Datei als Variable erledigen (z. B. meine $ selectedFile).

Ich habe einige Codes zu öffnen Windows Explorer gefunden:

my $explorer = 'c:/windows/SysWOW64/explorer.exe'; 
my $directory = 'C:\\testdir\\'; 
system($explorer,$directory); 

... die (basierend auf Perl Mönchen http://www.perlmonks.org/bare/?node_id=313539) gut funktioniert Windows Explorer aus dem pl Skript zu öffnen.

Wie bekomme ich den Code, um die Datei zu erkennen, auf die ich im Explorer-Fenster klicke und eine Variable daraus zu erstellen? Ist es möglich oder ist Perl nicht der richtige Weg?

Cheers, Matt

+0

Related: [Wie präsentiere ich einen offenen Ordner Auswahldialog in Perl?] (Http://stackoverflow.com/questions/1871290/how-do-i-present-an-open-folder-selection-dialog- in-perl) – ThisSuitIsBlackNot

Antwort

0

Hier ist eine sehr einfache Art und Weise Tk verwenden.

use warnings; 
use strict; 

use Tk; 

my $file = Tk::MainWindow->new->getOpenFile; 

print "selected file: $file\n\n"; 

open my $fh, '<', $file or die $!; 

while (<$fh>){ 
    print; 
} 
1

Hier ist ein sehr nackten Knochen Skript Win32::GUI mit:

use strict; 
use warnings; 

use Win32::GUI(); 

my $file = Win32::GUI::GetOpenFileName(
    -filemustexist => 1, 
); 

if (defined $file) { 
    print "Selected file: $file\n"; 
} else { 
    print "Canceled\n"; 
} 

Wenn Sie Win32 :: keine GUI noch haben (Can't locate Win32/GUI.pm in @INC ...), können Sie es installieren cpan Win32::GUI verwenden, zumindest mit Strawberry Perl . Wenn Sie ActivePerl verwenden, denke ich, dass Sie es mit ppm install Win32-GUI bekommen können.

Verwandte Themen