Schrift
[thread]10408[/thread]

Leerzeichen im dateipfad unter windows

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
#Kein Kommentar
 2007-09-17 19:51
#99573 #99573
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
hi community,

ich arbeite mit einem perl-script unter windows und öffne dateien,
in deren pfadangaben leerzeichen vorkommen, z.B.:

Code: (dl )
C:/Dokumente und Einstellungen/example/test.pl


jetzt gibt die konsole aber diese meldung auf deutsch aus:

Code: (dl )
1
2
Der Befehl "C:/Dokumente" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.


das heißt das system oder Perl erkennt den pfad nicht als ganzes!
Was kann ich tun?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
pq
 2007-09-17 19:59
#99574 #99574
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
anführungszeichen drumherumsetzen? oder system() in listenform benutzen?
perldoc -f system
oder gleich auf system verzichten und ein perl-builtin verwenden,
je nachdem was du tun willst.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
#Kein Kommentar
 2007-09-17 20:17
#99575 #99575
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
danke, für die schnelle antwort.

also ich benutze jetzt system, funktioniert trotzdem nicht:

Code (perl): (dl )
1
2
3
my ("$auszufuehrende_datei") = "C:/Dokumente und Einstellungen/example/test.pl"

system ("$auszufuehrende_datei")
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
sid burn
 2007-09-17 20:57
#99576 #99576
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Das ist keine Bash, was willst du mit den Anführungszeichen um die variable? Vorallem um die my Deklaration? Das müsste doch eigenltich schon beim Kompilieren fehler werfen...

Das was tinita meinte sind Anführungszeichen um den teil das Leerzeichen enthält:

Code (perl): (dl )
1
2
my $exec_file = 'C:\\"Dokumente und Einstellungen"\\example\\test.pl';
system $exec_file;


Aber ka ob es so geht. Hab kein Windows zum testen.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
#Kein Kommentar
 2007-09-17 21:46
#99578 #99578
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
die anführungsstriche sind durch copy&paste da reingekommen.

hmm, danke so funktioniert es jetzt, allerdings habe ich jetzt bemerkt,
dass ich den pfad von einer subroutine als ergebnis bekomme, also kein
direkten zugriff auf den string habe.

muss ich jetzt irgendwie mit einer regex etwas bauen, damit ich die
anführungsstriche reinbekomme?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
esskar
 2007-09-17 22:02
#99579 #99579
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
#Kein Kommentar+2007-09-17 18:17:55--
danke, für die schnelle antwort.

also ich benutze jetzt system, funktioniert trotzdem nicht:

Code (perl): (dl )
1
2
3
my ($auszufuehrende_datei) = "C:/Dokumente und Einstellungen/example/test.pl"

system ("$auszufuehrende_datei")
nepos
 2007-09-18 10:16
#99585 #99585
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Eventuell solltest du dir mal die verschiedenen File-Module ansehen. Insbesondere CPAN:File::Spec und CPAN:File::Path. Damit kann man auf portable Weise mit Pfaden arbeiten und muss sich nicht wirklich soviele Gedanken machen, wie nun welches Betriebssystem seine Pfade aufbaut...
#Kein Kommentar
 2007-09-18 15:02
#99596 #99596
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
danke, für die hilfe!
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
#Kein Kommentar
 2007-12-08 19:56
#103639 #103639
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
tut mir leid das ich diesen thread nochmal aufrollen muss, aber ich habe da immer
noch ein problem mit diesen leerzeichen. Ich wollte in einem Tk-Programm eine
Datei ausführen und habe deshalb das modul Proc::Background benutzt.
nun habe ich allerdings immernoch probleme mit den Leerzeichen und ich krieg es immer noch nicht hin.

also hier mal der code:
Code: (dl )
1
2
3
4
my $program	= $ARGV[0];
$program =~ s/ /\\ /g;

my $proc1 = Proc::Background->new("$program");


egal wie ich die leerzeichen escape, immer findet Windows das programm nicht...
Weiß jemand von euch wie ich das schaffen könnte?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
#Kein Kommentar
 2007-12-08 20:04
#103640 #103640
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
oh, sorry!

ich habe es jetzt mit system und mehreren Argumenten gelöst, wie schon von euch
vorher vorgeschlagen. es funktioniert.

Code: (dl )
1
2
3
my @name_with_spaces	= split m/ /, $program;

system ("1", @name_with_spaces);


ich hatte es schon vorher ausprobiert, allerdings hatte ich damals noch woanders einen fehler, sodass es nicht funktionieren konnte!

tut mir leid war mein fehler...
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-09-17 19:51.