Schrift
[thread]5752[/thread]

Kopieren in ein Verzeichnis (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
[E|B]
 2004-01-03 20:41
#55642 #55642
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=pq,03.01.2004, 19:07]@eb: wieso system nehmen, wenn's mit File::Copy einfacher und betriebssystem-unabhängig geht?[/quote]
Huch, ich habe vergessen "TIMTOWTDI" darunter zu schreiben... ;)
Sicher gehts mir File::Copy effizienter!
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
utang
 2004-01-03 20:46
#55643 #55643
User since
2004-01-03
30 Artikel
BenutzerIn
[default_avatar]
wenn ich die Zeile
Code: (dl )
&Fluxfscan($name);

gegen
Code: (dl )
&Fluxfscan("$DST_DIR" . "$name");


ersetze,habe ich zwar im hauptverzeichnis die richtigen datein,aber das Angelegte Verzeichnis bleibt trotzdem leer\n\n

<!--EDIT|utang|1073155860-->
pq
 2004-01-03 21:00
#55644 #55644
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
copy("$name","$DST_DIR") or die "Konnte nicht kopieren, weil: $!";

die anführungsstriche um die variablen sind übrigens völlig überflüssig.
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
utang
 2004-01-04 18:06
#55645 #55645
User since
2004-01-03
30 Artikel
BenutzerIn
[default_avatar]
use Cwd; #Modul zum Ermitteln des aktuellen Verzeichnisses

use File::Copy;

$DST_DIR = "/home/tmarsh/.fluxbox/";
$SRC_DIR = "/usr/portage/x11-wm/fluxbox";

mkdir("$DST_DIR",0755) or die "kann $DST_DIR nicht erstellen: $!\n";
&Fluxfscan("$SRC_DIR");

sub Fluxfscan {
my ($workdir) = shift;
my ($startdir) = &cwd;

chdir($workdir) or die "Kann nicht in $workdir wecheseln: $!\n";
opendir(USR,".") or die "Kann $workdir nicht öffnen: $!\n";
my @names = readdir(USR);
closedir(USR);

foreach my $name (@names) {
next if ($name eq ".");
next if ($name eq "..");

print "$name\n";
copy("$name","$DST_DIR");

if (-d $name) {
mkdir("$DST_DIR"."$name",0755) or die "Kann $name
nicht anlegen\n";
Fluxfscan("$SRC_DIR" . "$name");
next;
}
}
chdir($startdir) or die "Kann nicht in $startdir wechseln: $!\n";
}
[/code]

mein Problem liegt im Handle mit dem $DST_DIR ...

hat keiner eine n möglichen Lösungsansatz?
eisbeer
 2004-01-04 18:12
#55646 #55646
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Vielleicht Zeile 30:
Code: (dl )
Fluxfscan("$SRC_DIR" . "$name");

durch
Code: (dl )
Fluxfscan("$SRC_DIR" . "$DST_DIR/$name");

ersetzen.
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
pq
 2004-01-04 18:27
#55647 #55647
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=utang,04.01.2004, 17:06]mein Problem liegt im Handle mit dem $DST_DIR ... [/quote]
inwiefern und woher weisst du das?
Quote
hat keiner eine n möglichen Lösungsansatz?

doch, sicher. vielleicht solltest du einfach mal die antworten von den leuten
lesen. bei meiner antwort habe ich den einzufügenden teil sogar rot markriert,
was dir eigentlich aufgefallen sein müsste, sofern du einen graphischen
browser benutzt.

nebenbei bemerkt blicke ich durch deinen code nun gar nicht mehr durch
und frage mich, wieso du z.B. $name erst kopierst und dann noch ein
verzeichnis namens $name erstellst. was genau möchtest du eigentlich tun?
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
KKO
 2004-01-04 22:05
#55648 #55648
User since
2003-11-05
124 Artikel
BenutzerIn

user image
um nochmal auf joey zurückzukommen
Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl -w
use strict;
use warnings;
use File::Copy;
my $dir = "f:/";
my $file = "all.txt";# aus dem aktuellen verzeichnis
my $CopyFile="$dir$file";
copy($file, $CopyFile) or die "Kopieren fehlgeschlagen: $!";
Gruß
KKO
utang
 2004-01-04 22:22
#55649 #55649
User since
2004-01-03
30 Artikel
BenutzerIn
[default_avatar]
Ich möchte ein Verzeichnis,samt inhalt(Datein und Unterverzeichnisse) kopieren.
Das Programm wie gleich aufgeführt macht folgendes:

Code: (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
use Cwd;
use File::Copy;

$DST_DIR = "/home/tmarsh/.fluxbox/"; #das ist das Ziel Verzeichnis
$SRC_DIR = "/usr/portage/x11-wm/fluxbox"; #das ist das Quellverzeichnis,ab da alles kopieren

mkdir("$DST_DIR",0755) or die "kann $DST_DIR nicht erstellen: $!\n"; #legt das Zielverzeichnis an

Fluxfscan("$SRC_DIR"); #ruft die Funktion auf, und fängt in dem verzeichniss an zu arbeiten was ich übergeben habe

sub Fluxfscan {
my ($workdir) = shift; # hier wird die varaible von dem Funktionsaufruf übergeben
my ($startdir) = &cwd; #hier wird festgestellt in welchen Verzeichnis ich mich gerade in der Console befinde

chdir($workdir) or die "Kann nicht in $workdir wecheseln: $!\n"; #hier wechselt er von dem Consolen-verzeichnis ins arbeitsverzeichnis
opendir(USR,".") or die "Kann $workdir nicht öffnen: $!\n";
my @names = readdir(USR);
closedir(USR);

foreach my $name (@names) {
next if ($name eq "."); #überspringt "."
next if ($name eq ".."); # überspringt ".."

print "$name\n";

# if (-d $name) { #wenn $name ein verzeichnis ist ...
# mkdir("$DST_DIR"."$name",0755) or die "Kann $name nicht anlegen\n"; #legt er in dem DST_DIR den neuen unterverzeichnis namen an
# &Fluxfscan($SRC_DIR . $name); #hier ruft er die Funktion wiedrum auf um den inhalt des neuen DIRS festzustellen
# next;
}
copy("$name","$DST_DIR"); #kopieren der datein ins DST_DIR
}
chdir($startdir) or die "Kann nicht in $startdir wechseln: $!\n"; #wecheslt von dem workdir ins ursprüngleche consolen dir zurück
}


die variable $name enthält zum beispiel folgende reihenfolge:

flubox/
- aDatei
- bDatei
- cDatei
- dVerzeichnis
- dVerzeichnis-aDatei
- dVerzeichnis-bDatei
-eDatei
-fDatei

mein eben aufgeführtes script kopiert die Datein (a,b,c,e,f) ins $DST_DIR, und lässt das Unterverzeichniss ausser acht. Wenn ich nun
Code: (dl )
1
2
3
4
if (-d $name) {
mkdir("$DST_DIR"."$name",0755) or die "Kann $name nicht anlegen\n";
&Fluxfscan($name);
next;

verwende, passiert es das er mir das Unterverzeichnis richtig anlegt,aber mir alle Datein ins DST_DIR kopiert ohne zu berücksichtigen wohin bzw. in welche unterverzeichnisse hinein gehören.

Konnte ich es so einigermassen beschreiben? Ist nur die FRage wie ich das realisiere das er mir die richtigen Datein in die richtigen unterverzeichnisse kopiert.
pq
 2004-01-04 23:06
#55650 #55650
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=utang,04.01.2004, 21:22]Ich möchte ein Verzeichnis,samt inhalt(Datein und Unterverzeichnisse) kopieren.[/quote]
ah, sag das doch gleich. dann möchtest du wahrscheinlich gerne File::NCopy
benutzen, gibt's auf CPAN.org.\n\n

<!--EDIT|pq|1073250384-->
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
utang
 2004-01-04 23:34
#55651 #55651
User since
2004-01-03
30 Artikel
BenutzerIn
[default_avatar]
das Modul habe ich schon gefunden, nur wormt es mich zu wissen was an meinem script verkehrt ist =)

aber danke =)
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2003-09-24 17:24.