Schrift
[thread]9205[/thread]

"installationsscript" in perlein script schreiben



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
the-loader
 2007-07-18 22:35
#78627 #78627
User since
2006-08-28
25 Artikel
BenutzerIn
[default_avatar]
hallo,
ich möchte gern ein script schreiben was das aktuelle script kopiert und dann mit einen parrameter der den path zum aktuellen script enthält ausführt.
das klappt auch soweit gut... nur das script was ausgeführt wird erstellt die datei (test.txt) da wo das alte script ist (irgentwo bei mir auf den desktop...) woher kommt das?

mein ansatz:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use Tie::File;
if ($0 !~ /system32\\temp123/ ) { temp(); }
tie @test, 'Tie::File', "test.txt";


sub temp {
system("md %windir%\\system32\\temp123");
my $filename = $0;
$filename =~ s/.*\\//g;
system("copy \"$0\" %windir%\\system32\\temp123\\$filename");
system("start %windir%\\system32\\temp123\\$filename del \"$0\"");
exit;
}
ptk
 2007-07-18 23:26
#78628 #78628
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Änderst du irgendwo dein current working directory?
the-loader
 2007-07-18 23:38
#78629 #78629
User since
2006-08-28
25 Artikel
BenutzerIn
[default_avatar]
nein? wie mache ich sowas?
ptk
 2007-07-18 23:40
#78630 #78630
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Code: (dl )
chdir "/ein/anderes/verzeichnis" or die $!;
renee
 2007-07-19 00:45
#78631 #78631
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Von wo rufst Du denn Dein Skript auf? (Welches Verzeichnis)

Vielleicht ist das Modul CPAN:FindBin etwas für Dich...

Code (perl): (dl )
1
2
3
4
use FindBin;

tie @test, 'Tie::File', $FindBin::Bin . '/test.txt';
# ...
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/
the-loader
 2007-07-19 01:37
#78632 #78632
User since
2006-08-28
25 Artikel
BenutzerIn
[default_avatar]
ich bin mit ptks lösung schon weiter gekommen, danke.
wie kann ich möglichst mit regex aus den string "C:\programme\test\test.pl" das "\test.pl" löschen? (test.pl kann sich ändern)
ich bedanke mich schon mal in voraus
ptk
 2007-07-19 01:49
#78633 #78633
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Code: (dl )
1
2
use File::Basename;
dirname($dateipfad);
the-loader
 2007-07-19 02:11
#78634 #78634
User since
2006-08-28
25 Artikel
BenutzerIn
[default_avatar]
ich danke dir!!:cool:
AndreasM
 2007-07-19 11:44
#78635 #78635
User since
2005-10-08
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
use File::Basename;
dirname($dateipfad);


Und falls das Modul File::Basename bei Dir aus irgendeinem Grund nicht verfügbar ist, kann, wenn
Code: (dl )
$string = 'C:\programme\test\test.pl'
ist,

Code (perl): (dl )
$string =~ s/[^\\]+$//;


helfen.\n\n

<!--EDIT|AndreasM|1184831424-->
renee
 2007-07-19 11:58
#78636 #78636
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Naja, File::Basename ist seit 5.001 im CORE enthalten. Und Deine Methode ist nicht ganz "sicher" - was wenn in einem Skript sowas gemacht wird:
Code (perl): (dl )
my $file = $path . '/test.txt'


Damit wird das ganze Plattformunabhängig, aber Dein Code "versagt" dann dabei.
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-07-18 22:35.