Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11977[/thread]

Dateinamen ersetzen, durch gefundene in der gleichen Datei?

Leser: 1


<< >> 10 Einträge, 1 Seite
yasukatakaya
 2008-06-05 12:29
#110751 #110751
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Moin,
irgendwie klappt es nicht mit dem ersetzen, obwohl ich das Datum gefunden habe und es geprintet wird, könnt ihr mir sagen, was hier
falsch ist?
Zur Info: Ich versuche ein Datum "Test TimeStamp: " in einer Datei zu finden und mit diesem Datum die selbe Datei umzubenennen!
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
#!bin\perl
use strict;
use warnings;

#HIER DEN PFAD FÜR DIE ORIGINELLEN DATEIEN ANGEBEN, WO DIESE STEHEN
my $pfadUrsprung = "C:/Documents and Settings/Desktop/a";

#HIER DEN PFAD FÜR DIE DATEIEN ANGEBEN, WO DIESE GEHOLT WERDEN SOLLEN
my $pfadDerDateien = "C:/Documents and Settings/Desktop/tmp";

#HIER DEN PFAD FÜR DIE ZU ERSTELLENDE DATEI ANGEBEN
my $pfadDerAusgabeDatei = "C:/Documents and Settings/Desktop/";


opendir(DIR,$pfadDerDateien);
my $datum;
my $datei;

while($datei = readdir(DIR))
{
print $datei."\n";
open (in,'<',"$pfadDerDateien/$datei");

while (<in>)
{
($datum) = /Test TimeStamp: (\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)\n/;
$datum = "$3$2$1$4$5$6";
}
close(FILE);
#print $datum;
rename("$pfadDerDateien/$datei", "$pfadDerDateien/$datum$datei.txt");

}
closedir(DIR);
renee
 2008-06-05 12:52
#110754 #110754
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mach mal aus
Code (perl): (dl )
rename("$pfadDerDateien/$datei", "$pfadDerDateien/$datum$datei.txt");


das hier:
Code (perl): (dl )
rename("$pfadDerDateien/$datei", "$pfadDerDateien/$datum$datei.txt") or die $!;


Das hilft bei der Fehlersuche vielleicht weiter...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
yasukatakaya
 2008-06-05 13:05
#110755 #110755
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Es kommt die folgende Fehlermeldung, das auf rename.... zeigt, mit Permission denied etc.

Hast du vielleicht noch eine andere Möglichkeit die Datei zu umbenennen?
nepos
 2008-06-05 13:22
#110759 #110759
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Naja, wenn du keine Berechtigungen hast, wie willst du die Datei denn dann umbenennen? Das hat nichts mit Perl direkt zu tun.
Struppi
 2008-06-05 13:22
#110760 #110760
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Klappt auch schon der open Befehl nicht?
yasukatakaya
 2008-06-05 13:23
#110762 #110762
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Ich hab die volle Berechtigung eigentlich, da es auf meinen Pc und der lokalen Festplatte alles befindet, ich weiß auch nicht warum der rummeckert?!
yasukatakaya
 2008-06-05 13:25
#110763 #110763
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Ach der open Befehl klappt wunderbar!
Wenn ich anders rename, d.h. wenn ich den Namen selber vergebe, dann klappt es!
Struppi
 2008-06-05 13:36
#110765 #110765
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Also das wirft keinen Fehler:
Code (perl): (dl )
open (in,'<',"$pfadDerDateien/$datei") or die "Fehler: $!";

Wenn ja, dann paßt das alles nciht zusammen, was du da schilderst.
yasukatakaya
 2008-06-05 13:46
#110766 #110766
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Ja hast schon recht, es kommt die Permission... Meldung, doch wenn ich so umbenenne, dann kommt nichts und es wird alles umbenannt!
Nur hier wird nichts aus einer Datei geholt und es funzt, aber ich brauche den Zeitstempel, der in der Datei ist?!
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
opendir(DIR,$pfadDerDateien);

while(my $datei = readdir(DIR))
{
#hier werden die Dateien umbenannt, da diese mit der Seriennummer anfangen
#sie müssen aber mit dem Datum anfangen
foreach my $neuerName ($datei =~ /[0-9]{11,}/g)
{
print "$neuerName ";
rename("$pfadDerDateien/$datei", "$pfadDerDateien/$neuerName.txt");
}
close(FILE);
}
closedir(DIR);
Struppi
 2008-06-05 13:47
#110767 #110767
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Das Skript hat keine rechte die Datei an dem Ort umbzubennen und du solltest immer Dateioperation prüfen, jetzt hast du diese alle wieder rausgeschmissen, das ist schlecht.
<< >> 10 Einträge, 1 Seite



View all threads created 2008-06-05 12:29.