fuchs 10 Geschrieben 28. September 2004 Melden Teilen Geschrieben 28. September 2004 Hallo zusammen, hätte da mal wieder eine interessante Frage!! Ich möchte von einem FTP Verzeichniss eine bestimmte datei herunterladen die ich vorher in einer Variabele bestimme. Den rest erledigt der Batch..........."hab ich mir so gedacht", hat jemand nen guten Tip. @echo off set /P SI="Gib Bitte den Namen der Datei an " :%SI% :Echo %SI% ftp open xxxxserver controlling controll lcd c:\test cd /share/ag/XX get %SI%.txt bye Danke fürs Helfen....wie immer ggg Zitieren Link zu diesem Kommentar
Peter G. 10 Geschrieben 28. September 2004 Melden Teilen Geschrieben 28. September 2004 Hai! :) Ich mache da etwas "ähnliches".... Du kannst dem FTP Befehlt eine Datei anhängen, in der stehen die Befehle..... hier z.B. ------------------------------- Batchdatei: ftp -v -s:ftpbefehle.ftp 123.123.123.123 ------------------------------- ------------------------------- "ftpbefehle.ftp" Antwortdatei: Administrator xxxxxxxxxpasswordxxxxxxx cd backups prompt dir get backup.bkf quit -------------------------------- Jetzt kommt der "Gag" -> du kannst dir die Antwortdatei selber erstellen, z.B. z.B. echo laberlaberbefehl >ftpbefehle.ftp echo zeile2laber >>ftpbefehle.ftp usw..... Vielleicht hilft es..... :D Tschau Peter Zitieren Link zu diesem Kommentar
fuchs 10 Geschrieben 28. September 2004 Autor Melden Teilen Geschrieben 28. September 2004 heho Peter, danke für die schnelle Antwort, aber mit den beiden SKripten arbeite ich schon. Der Casus Knaktus ist das ich eine bestimmte Datei vom FTP verzeichniss haben will und nicht immer wieder die gleiche, deswegen wollte ich eine Variable einbauen um das ganze flexibel zu gestalten. Hinzukommt daß das ganze für einen User ist, der soll dann nurnoch den Dateinamen angeben und gut ist. RTH Fuchs Zitieren Link zu diesem Kommentar
Peter G. 10 Geschrieben 28. September 2004 Melden Teilen Geschrieben 28. September 2004 Hai! Ja, schon klar... :) Was spricht dagegen die Variable mit "echo get %variable% >>ftpbefehle.ftp" in die "Antwortdatei" mit einzubinden? Tschau Peter Zitieren Link zu diesem Kommentar
fuchs 10 Geschrieben 28. September 2004 Autor Melden Teilen Geschrieben 28. September 2004 hmmmm, war ich da etwa zu vorschnell...........werde mal ne runde tüfteln. danke peter Zitieren Link zu diesem Kommentar
fuchs 10 Geschrieben 28. September 2004 Autor Melden Teilen Geschrieben 28. September 2004 Hallo Peter, absolut hervorragend, die Varibale übergeben funzt einwandfrei, aber die bleibt nun in dem skript!!! Wie stell ich das denn an das die automatisch gelöscht wird, sonst wird die Liste ja immer länger!!! Danke , du warst mir bis jetzt eine große Hilfe Hier mein Skript +++++++++++++++++++++++++++++++++++++++++++++ @echo off set /P SI="Gib Bitte den Namen der Datei an " :%SI% :Echo %SI% echo get %si% >>ftp1.txt ftp -s:ftp1.txt ++++++++++++++++++++++++++++++++++++++++++++++ open xxxxxxxxx user password lcd c:\test cd /share/ag/xx get bye get test.txt <---- soll nachher wieder gelöscht werden get test.cmd <----- das olle ding auch ++++++++++++++++++++++++++++++++++++++++++++++ Zitieren Link zu diesem Kommentar
Peter G. 10 Geschrieben 28. September 2004 Melden Teilen Geschrieben 28. September 2004 Haiho! Hmmmm, lege die Datei doch jedes mal neu an.... :D echo open xxxxxxxxx >ftp1.txt echo user >>ftp1.txt echo password >>ftp1.txt echo lcd c:\test >>ftp1.txt echo cd /share/ag/xx >>ftp1.txt echo get >>ftp1.txt echo bye >>ftp1.txt So würde ich es machen..... eigentlich ganz einfach Tschau Peter Zitieren Link zu diesem Kommentar
fuchs 10 Geschrieben 29. September 2004 Autor Melden Teilen Geschrieben 29. September 2004 Guten Morgen zusammen und speziell Peter, die Idee mit dem Skript neu schreiben find ich gut. Das Skript wird auch angelget aber jetzt funktioniert keine Verbindung mehr bzw. er akzeptiert keinen Nutzer mehr, mit Anonymus hab ich es schon probiert>> funzt aber auch nicht, die anderen Parameter bei FTP helfen auch nicht weiter. Ich tüftel mal weiter echo off set /P SI="Gib Bitte den Namen der Datei an " :%SI% :Echo %SI% echo open titusbilder >>ftp1.txt echo testuser >>ftp1.txt echo testpasswordl >>ftp1.txt echo user >>ftp1.txt echo lcd c:\test >>ftp1.txt echo cd .. >>ftp1.txt echo cd .. >>ftp1.txt echo cd .. >>ftp1.txt echo cd share/ag/SicherungPP >>ftp1.txt echo get %si% >>ftp1.txt echo bye >>ftp1.txt ftp -s :ftp1.txt pause Zitieren Link zu diesem Kommentar
Peter G. 10 Geschrieben 29. September 2004 Melden Teilen Geschrieben 29. September 2004 Hai! :) Wenn du eine neue FTP Datei schreibst, ist es wichtig, dass der erste ECHO Befehl nur ein > am Ende hat. Das bewirkt, daß die Datei neu angelegt wird. Zwei >> bewirken, das an die Datei angehängt wird.... Tschau Peter Zitieren Link zu diesem Kommentar
fuchs 10 Geschrieben 29. September 2004 Autor Melden Teilen Geschrieben 29. September 2004 Hallo Ups, yep, da hast du recht, aber der login funzt immernoch nicht? Solangsam hab ich keinen blassen schimmer mehr wie das mit dem Login klappen soll. Danke Fuchs Zitieren Link zu diesem Kommentar
Peter G. 10 Geschrieben 29. September 2004 Melden Teilen Geschrieben 29. September 2004 Funktioniert der login normal mit dem FTP Programm (ohne das Batchgeraffel)? Zitieren Link zu diesem Kommentar
fuchs 10 Geschrieben 29. September 2004 Autor Melden Teilen Geschrieben 29. September 2004 lol, das is alles kein Thema ich gebe ftp xxxserver ein und logge mich dann mit xxuser und xxpassword ein.......alles kein thema. Das Skript in die Richtung PC>FTP steht und funzt einwandfrei Das Skript in die andere Richtung FTP>PC klappt nicht und alles wegen diesem '*'§$ Login. RTH Fuchs Zitieren Link zu diesem Kommentar
lennu 10 Geschrieben 29. September 2004 Melden Teilen Geschrieben 29. September 2004 Moin moin, falls Perl für Dich kein Fremdwort ist, kannst Du auch folgendes Script benutzen (habe es eben zusammengebastelt und getestet.) Kopier Dir den folgenden Scriptcode in einen Editor, ändere die paar Konfigurationseinstellungen und speicher das ganze unter irgendeinem Namen (z.B. "getFtpFiles.pl") ab. Dann rufst Du es mit folgender Syntax auf: perl getFtpFiles.pl -f <Dateiname> -p <FTP-Passwort> Für das Script selber benötigst Du lediglich Perl und das Modul Net::Ftp. Falls Du noch Fragen hast, meld Dich einfach... Gruß, Lennu -------8<-------8<-------8<-------8<-------8<-------8<-------8<-------8<------- #!c:/programme/perl/bin/perl.exe use strict; use Getopt::Long; use Net::FTP; # # Config # # Username ("ftp") my $ftpuser = ""; # Hostname ("ftp.suse.de"); my $ftphost = ""; # Directory on FTP-Server ("/pub/suse/"); my $ftpdir = ""; # NEVER USE BACKSLASHES & END WITH SLASH # Local Directory ("c:/winnt/temp/"); my $localdir = ""; # NEVER USE BACKSLASHES & END WITH SLASH ################################################# # MAIN SCRIPT - DO NOT CHANGE ANYTHING BELOW!!! # # (except you know what you do ;-) ) # ################################################# my (%Config, $Result); Getopt::Long::Configure( "prefix_pattern=(-|\/)" ); $Result = GetOptions( \%Config, qw( help|?|h file|f=s pass|p=s ) ); $Config{help} = 1 if( ! $Result || ! $Config{file} || ! $Config{pass}); if ($Config{help}) { Usage(); exit(); } my ($newerr, @ERRORS); my $ftp=Net::FTP->new($ftphost,Timeout=>240) or $newerr=1; push @ERRORS, "Can't ftp to $ftphost: $!\n" if $newerr; myerr() if $newerr; print "Connected to $ftphost\n"; $ftp->login($ftpuser,$Config{pass}) or $newerr=1; #print "Getting file list"; push @ERRORS, "Can't login to $ftphost: $!\n" if $newerr; $ftp->quit if $newerr; myerr() if $newerr; print "Logged in\n"; $ftp->type("I"); push @ERRORS, "Can't set type to binary: $!\n" if $newerr; $ftp->quit if $newerr; myerr() if $newerr; print "Type binary set\n"; $ftp->cwd($ftpdir) or $newerr=1; push @ERRORS, "Can't cd $!\n" if $newerr; myerr() if $newerr; $ftp->quit if $newerr; print "Changed Directory"; my $localfile = $localdir.$Config{file}; print "Getting $_\n"; $ftp->get($Config{file},$localfile) or $newerr=1; push @ERRORS, "Couldn't get $Config{file} $!\n" if $newerr; myerr() if $newerr; $ftp->quit if $newerr; print "Got file\n"; $ftp->quit; sub myerr { print "Error: \n"; print @ERRORS; exit 0; } sub Usage { my ( $ScriptName ) = ( $0 =~ m#([^\\/]+)$# ); my $UnderLine = "-" x length( $ScriptName ); print << "EOT"; $ScriptName $UnderLine this script gets a specific file via ftp Syntax: $0 [-help] -f <file> -p <pass> -f <file>......name of file to get -p <pass>......password -help............shows this page Example: $0 -f test.txt -p password © 2004 by Lennart Freyberg (lennu\@lennu.org) EOT } -------8<-------8<-------8<-------8<-------8<-------8<-------8<-------8<------- Zitieren Link zu diesem Kommentar
fuchs 10 Geschrieben 29. September 2004 Autor Melden Teilen Geschrieben 29. September 2004 hab die lösung..... echo off set /P SI="Gib Bitte den Namen der Datei an " :%SI% :Echo %SI% echo open xxxx >ftp1.txt echo user >>ftp1.txt echo userxxx >>ftp1.txt echo pwxxx >>ftp1.txt echo lcd c:\test >>ftp1.txt echo cd .. >>ftp1.txt echo cd .. >>ftp1.txt echo cd .. >>ftp1.txt echo cd share/ag/SicherungPP >>ftp1.txt echo get %si% >>ftp1.txt echo bye >>ftp1.txt ftp -n -s:ftp1.txt pause bei dem aufruf des ftp sollte -n eingegeben werden um sich dann mit user anzumelden......... danke für die hilfe Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.