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

Dateiname ändern über Benutzereingabe

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
WolleXPC
 2007-12-30 15:41
#104269 #104269
User since
2007-12-30
3 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich bin neu hier und schon einige Grundkenntnisse in Perl.

Im moment schreibe ich ein Skript welches Netzwerkeinstellungen in eine Textdatei speichert, die man später aus der Datei wiederherstellen kann.

Nun mein Problem: Die Textdatei soll vom benutzer über die Kommandozeile umbenannt werden. Das Skript fragt also nach dem Dateinamen. Nur wie bau ich dann die Variable $Dateiname in die Funktion "rename" ein, die den Dateiname verändert???

Zudem möcht ich eine funktion einbauen die vor dem ändern des Dateinamen den Ordner wo die Profile gespeichert werden, überprüft ob es solch eine Datei schon gibt.
Wär super wenn ihr mir das sagen könnt.

Vielen Dank und einen guten Rutsch

Gruß Wolle
#Kein Kommentar
 2007-12-30 15:52
#104270 #104270
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
so wie ich das verstanden habe müsste das so gehen...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my ($old_name, $new_name);

print "Alter Dateiname?\n>>> ";
chomp ($old_name = <>);

print "Neuer Dateiname?\n>>> ";
chomp ($new_name = <>);

unless (-e "$new_name"){
rename ($old_name, $new_name);
}
else{
print "'$new_name' existiert schon!\a\n";
}

<>;



\\edit: prüft jetzt ob es den dateinamen schon gibt...
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
lichtkind
 2007-12-30 16:10
#104271 #104271
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
wenn ich dich richtig verstanden habe hast du eine sub namens rename und du fragst wie du ihr den wert den neuen dateinamens übergeben sollst?
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
#Kein Kommentar
 2007-12-30 16:29
#104274 #104274
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
achso, ich hatte das anders verstanden.

variablen übergibst du einfach als parameter, die du mit dem array @_ in
der sub abfragen kannst.

kleines beispiel:

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
use strict;
use warnings;

my $zahl_1 = 10;
my $zahl_2 = 30;

my $ergebnis = summe_von ($zahl_1, $zahl_2);

print $ergebnis; # Ausgabe "40"

<>;


## die subroutine:

sub summe_von{
my ($zahl_1, $zahl_2) = @_; # die parameter sind automatisch in @_ drin

# also ist jetzt $zahl_1 gleich 10
# und $zahl_2 ist gleich 30

return $zahl_1 + $zahl_2; # rückgabe der summe (40)
}


du könntest dir auch mal die perlsub manpage anschauen
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
WolleXPC
 2008-01-01 13:54
#104328 #104328
User since
2007-12-30
3 Artikel
BenutzerIn
[default_avatar]
Ich glaub ihr habt das missverstanden.
Hier noch mal der genaue Ablauf:

-Skript liegt im Ordner C:\Skripte\
-Netzwerkprofile liegen im Ordner C:\Profile\ und werden mit dem Dateinamen "verbindung.txt" erstellt.
-Benutzer weiß nicht das sie "verbindung.txt" heißen
-Benutzer wird nach dem speichern des Profils direkt aufgefordert einen neuen Dateinamen einzugeben -> über Kommandozeile
-Skript soll vor dem umbenennen überprüfen ob der gewünschte Dateiname schon vergeben wurde, wenn nicht soll profil datei umbenannt werden

Ich weiß leider nicht wie man das "Umbennen" mit einer Variable, hinter der sich der Dateinamen versteckt schreibt. Das normale umbenennen von Dateien wo man Pfad angibt ist kein Problem. Aber der Pfad und ausgangsdatei ist dem Benutzer nicht bekannt.

Wünsche euch noch ein Frohes neues Jahr

Gruß Wolle
renee
 2008-01-01 14:03
#104329 #104329
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aber das Skript kennt Pfad und Name, oder?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use File::Copy qw(move);

my $source_path = 'C:\Pfad\irgendwas';
my $source_file = 'filename.txt';

chomp( my $target = <STDIN> );

unless( -e $target ){
    move $source_path . '\\' . $source_file, $target;
}
else{
    print "Datei $target schon vorhanden"
}
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/
WolleXPC
 2008-01-01 23:52
#104335 #104335
User since
2007-12-30
3 Artikel
BenutzerIn
[default_avatar]
renee+2008-01-01 13:03:04--
Aber das Skript kennt Pfad und Name, oder?


Ne wie sag ich es dem Skript denn?

soweit funktioniert das Skript schon, es kopiert nur die Datei in den Ordner wo es eigentlich nicht hin soll.

Vielen Dank schon mal dafür.

Gruß Wolle
styx-cc
 2008-01-02 10:02
#104336 #104336
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Kannst du ihm einfach ueber die Standarteingabe sagen, also beim STDIN:
Code: (dl )
06: chomp( my $target = <STDIN> );

Da den Pfad incl. Dateinamen angeben

MfG
Pörl.
Struppi
 2008-01-02 12:33
#104338 #104338
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
WolleXPC+2008-01-01 22:52:13--
renee+2008-01-01 13:03:04--
Aber das Skript kennt Pfad und Name, oder?


Ne wie sag ich es dem Skript denn?
In dem du das in irgendwelche Varibeln einträgst. Oder erwartest du das das Skript Gedankenlesen kann?
renee
 2008-01-02 13:12
#104339 #104339
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe ja schon gezeigt, wie man so etwas macht...
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/
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-12-30 15:41.