Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Batch zum Dateidownload (https://www.delphipraxis.net/37393-batch-zum-dateidownload.html)

Akut-Programming 5. Jan 2005 12:16


Batch zum Dateidownload
 
Hi!

Ich habe auf einem Server eine Deitei im FTP-Bereich liegen, auf die ich nicht über die eigentliche Webadresse zugreifen kann. Nun könnt ich mal Hilfe brauchen. - Da ich mich mit Batches nicht so auskenne, wollt ich mal fragen, ob mir mal jemand n Batchbeispiel geben kann, mit dem ich

1. eine FTP Verbindung zu einem bestimmten Ordner auf dem Server herstellen kann (Logindaten sind vorhanden)
2. eine beliebige Datei aus diesem Ordner in einem Ordner auf meiner Platte abglegen

kann?

[edit] Hab ich mit ner Batch überhaupt die Möglichkeit dafür? [/edit]

Gruß,
Sascha

Akut-Programming 5. Jan 2005 13:06

Re: Batch zum Dateidownload
 
Also wie ich eine Verbindung aufbauen kann, das hab ich nun schon raus bekommen, aber bis jetzt nur manuell. Nutzer und passwort müssen von hand eingegeben werden. Ist es möglich dies zu automatisieren? Reicht es in der Batch einfach nach connect zum ftpserver in einer zeile den nutzer und in der nächsten das passwort anzugeben? Wie bekomme ich eine Datei vom server in einen ordner meiner lokalen platte? Mit mget komme ich zwar an ne datei und der kopiert auch irgendwas, aber ich hab keine ahnung wohin? Könnt ihr mir dabei helfen?

Sprint 5. Jan 2005 13:47

Re: Batch zum Dateidownload
 
Zitat:

Zitat von Akut-Programming
Hab ich mit ner Batch überhaupt die Möglichkeit dafür?

Das kannst du mit dem Konsolenprogramm FTP von Microsoft machen.

Eine Textdatei erstellen für die FTP Befehle: z.B. C:\FTP.TXT
Code:
open ftp.borland.com
user anonymous
IE@
cd /pub/delphi/devsupport/updates/delphi5/
binary
get d5vb33corbapatch.zip C:\TEMP\d5vb33corbapatch.zip
bye
Und in der Konsole startest du den FTP Client so:
Code:
ftp -n -s:c:\ftp.txt
Mit "open" wird zum FTP Server verbunden. "User" sendet die Befehle zum Einloggen. "Anonymous" ist der Benutzername. "IE@" das Kennwort. Mit "cd" wird das Verzeichnis gewechselt. "binary" sorgt dafür das die Daten im Binär-Modus kommen und "get" lädt die Datei runter. "bye" und "quit" loggen sich wieder aus und beenden dann den FTP Client.

Steve 5. Jan 2005 13:47

Re: Batch zum Dateidownload
 
Hi,

Code:
ftp -n server.com      //stellt Verbindung zu "server.com" her, -n verhindert Automatisches Anmelden
user name pass         // User "name" mit Passwort "pass" am Server anmelden
...
close                  // Verbindung schließen
quit                   //"ftp" beenden
edit: So funzt das nich, folgendes aber schon:
Alternativ kannst Du auch die Befehle, die in "FTP" ausgeführt werden sollen, in eine eigene Datei schreiben und diese mit "ftp -s:[Dateiname]" übergeben.


Gruß
Stephan :dance:

Basilikum 5. Jan 2005 13:48

Re: Batch zum Dateidownload
 
ich gehe davon aus, dass Du dies bis jetzt mit dem Windows-FTP-Tool probiert hast....
es gibt jedoch andere Tools, die sich für den Batch-Betrieb besser eigenen.

z.B. Pocket-FTP-Client von http://www.beeler-it-services.ch/downloads.shtml
Code:
C:\> bitspftpclient retrieve [url]ftp://user:password@ftp.domain.com/datei.zip[/url] c:\temp\datei.zip

Akut-Programming 5. Jan 2005 13:50

Re: Batch zum Dateidownload
 
Ich danke euch für eure Hilfe! Funzt prima!! :thumb:

Akut-Programming 5. Jan 2005 14:06

Re: Batch zum Dateidownload
 
Eine frage hab ich noch... Zur sicherheit wollt ich die runtergeladene Datei archivieren. Hab mir eigentlich gedacht, das es mit folgenden Befehl gehen könnte
Code:
@set datum=date /t
copy /Y C:\datei1 C:\%datum%_datei1
aber so schreibt er ja wirklich nur den string "date /t" in die variable datum. Wie bekomme ich nun hin, das er die Datei zusammengesetzt mit dem Datum kopiert? Es müsste dann also eine Datei geben die "Mi 05.01.2005_datei1" heißt. Ich hoffe, ihr versteht wie ich´s mein? :drunken:

Steve 5. Jan 2005 14:12

Re: Batch zum Dateidownload
 
Hi,

damit hab ich mich vor paar Wochen auch rumgeärgert. Hab einfach das Kommandozeilentool von WinRar genommen, mit folgenden Parametern:
Code:
rar a -m4 -ag"YYYY-MM-DD (NN)" "Sicherung_" ZuSicherndeDatei.dat

rar:   Programm
a:     Archivieren
-m4:   Kompressionsmethode
-ag:   Archivname aus akt. Zeit & Datum
"(NN)": Archive nummerieren
"Sicherung_": Anfang des Archivnamens (evtl. mit Pfad...)
Das ist garantiert der geringste Aufwand :)

Gruß
Stephan :dance:

Akut-Programming 5. Jan 2005 14:14

Re: Batch zum Dateidownload
 
Hmm, eigentlich wollt ich mir nun nicht noch extra Progz installieren. - Nur wenn´s anderst nicht geht, bleibt mir wohl nichts anderes übrig?!:pale: :roll:

Gruß,
Sascha

Steve 5. Jan 2005 14:17

Re: Batch zum Dateidownload
 
Zitat:

Zitat von Akut-Programming
Nur wenn´s anderst nicht geht, bleibt mir wohl nichts anderes übrig?!:pale: :roll:

Vermutlich geht es durchaus anders - nur ist diese Lösung imho die einfachste (bei mir war die Batch nur für Sicherungen am eigenen Arbtisplatz-PC, da is WinRar eh drauf) - Aber ohne "extra Tools" muss es auch irgendwie gehn :stupid:

Gruß
Stephan :dance:

Sprint 5. Jan 2005 14:18

Re: Batch zum Dateidownload
 
Zitat:

Zitat von Akut-Programming
Es müsste dann also eine Datei geben die "Mi 05.01.2005_datei1" heißt. Ich hoffe, ihr versteht wie ich´s mein? :drunken:

Du kannst doch im Copy Befehl %date% benutzen.

jensw_2000 5. Jan 2005 14:30

Re: Batch zum Dateidownload
 
Du kannst dir eine Batchdatei mit Inputfile schreiben

Code:
// Batch ftpdownload.bat

ftp -n server.com      //stellt Verbindung zu "server.com" her, -n verhindert Automatisches
user name pass         // User "name" mit Passwort "pass" am Server anmelden
binray
get igengwas
close                  // Verbindung schließen
quit                   //"ftp" beenden

Code:
// Inputfile inputfile.txt
[EnterTaste]
[EnterTaste]
[EnterTaste]
[EnterTaste]
[EnterTaste]
[EnterTaste]


Aufruf FTPDOWNLOAD.BAT << Inputfile.txt
"bin mir grade nicht sicher ob << oder <" :gruebel:

Die Batch zieht sich nach jeder Zeile eine Zeile aus dem Imputfile

Beispiel
format

qformat.bat
Code:
format a: /Q
REM 1.wartet auf Enter
REM 2.Fragt nach Label
REM 3.Noch eine Disk ???
inputfile.txt
Code:
[ENTERTASTE]
Name123[ENTERTASTE]
N[ENTERTASTE]
Aufruf :
Qformat.bat << inputfile
...formattiert die disk ohne nachfragen und setzt das Label Name123



Ich hoffe es hilft dir.
Nach dem Schema kannst du jede Batch automatisieren .. :mrgreen:

Akut-Programming 5. Jan 2005 14:35

Re: Batch zum Dateidownload
 
Zitat:

Zitat von Sprint
Du kannst doch im Copy Befehl %date% benutzen.

Hab ich nun mal versucht..
Code:
copy /Y C:\webalizer\ejvlogs\access_logs\access_log C:\webalizer\ejvlogs\access_logs\%date%_access_log
aber er legt die Datei nicht im Ordner an. Ist die Syntax falsch?? :gruebel:

jensw_2000 5. Jan 2005 14:39

Re: Batch zum Dateidownload
 
Code:
MD C:\webalizer\ejvlogs\access_logs\%date%_access_log

copy /Y C:\webalizer\ejvlogs\access_logs\access_log C:\webalizer\ejvlogs\access_logs\%date%_access_log\

Akut-Programming 5. Jan 2005 14:41

Re: Batch zum Dateidownload
 
"%date%_access_log" ist doch kein Verzeichnis, so soll die Datei letztendlich heißen, nur das anstelle von %date% dann das datum steht

Akut-Programming 5. Jan 2005 14:43

Re: Batch zum Dateidownload
 
selbst wenn ich die Datei "%date%_access_log.txt" in der Kopieranweisung nenne macht er´s nicht

Akut-Programming 5. Jan 2005 14:47

Re: Batch zum Dateidownload
 
Hier ist mal das LOG der FTP anweisung, nachdem auch kopiert werden soll. Ganz unten bekommt er n Syntaxfehler, dort würde er eigentlich kopieren...
Code:
Mi 05.01.2005 
Verbindung mit ************* wurde hergestellt.

220 ******************** FTP server (Version 6.5/OpenBSD, linux port 0.3.3) ready.
Benutzer (**********************:(none)):
331 Password required for ******************.

230- Have a lot of fun...
230 User ****************** logged in.
ftp> ftp>
cd ************
250 CWD command successful.
ftp> cd ***************
250 CWD command successful.
ftp> Remotedatei Lokale Datei get
*****************
**************************************
200 PORT command successful.
150 Opening BINARY mode data connection for '****************' (69737 bytes).
226 Transfer complete.
FTP: 69737 Bytes empfangen in 0,09Sekunden 741,88KB/s

ftp> quit
221 Goodbye.
Syntaxfehler.

Sprint 5. Jan 2005 14:48

Re: Batch zum Dateidownload
 
Zitat:

Zitat von Akut-Programming
selbst wenn ich die Datei "%date%_access_log.txt" in der Kopieranweisung nenne macht er´s nicht

Ich hab's auf einem Windows XP Rechner ausprobiert. Es funktioniert mit %date% im Dateinamen.

Sprint 5. Jan 2005 14:49

Re: Batch zum Dateidownload
 
Ich habe statt copy xcopy benutzt.

jensw_2000 5. Jan 2005 14:54

Re: Batch zum Dateidownload
 
Zitat:

aber er legt die Datei nicht im Ordner an
falsch interpretiert ... :wall:

Starte den Befehl mal bitte aus der CMD oder setze mal Pause an das Ende deiner Batchdatei ...
Was kommt für eine Fehlermeldung ... ?

Akut-Programming 5. Jan 2005 15:00

Re: Batch zum Dateidownload
 
Hier ein paar beispiele direkt aus der CMD
Code:
C:\batch>copy /Y C:\webalizer\ejvlogs\access_logs\access_log C:\webalizer\ejvlogs\access_logs\%date%_access_log
Syntaxfehler.

--------------------------------------------------------
XCOPY Quelle [Ziel] [/A | /M] [/D[:Datum]] [/P] [/S [/E]] [/V] [/W]
                    [/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
                    [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
                    [/EXCLUDE:Datei1[+Datei2][+Datei3]...]
--------------------------------------------------------

C:\batch>xcopy /Y C:\webalizer\ejvlogs\access_logs\access_log C:\webalizer\ejvlogs\access_logs\%date%_access_log
Unzulässige Parameteranzahl

C:\batch>xcopy C:\webalizer\ejvlogs\access_logs\access_log [C:\webalizer\ejvlogs\access_logs\%date%_access_log] /Y
Unzulässige Parameteranzahl

C:\batch>xcopy C:\webalizer\ejvlogs\access_logs\access_log C:\webalizer\ejvlogs\
access_logs\%date%_access_log /Y
Unzulässige Parameteranzahl

Sprint 5. Jan 2005 15:06

Re: Batch zum Dateidownload
 
COPY und auch XCOPY kopieren so wie sie sollen. Auch mit %date%.
Wie sieht das Ergebnis von %date% bei dir aus?

Akut-Programming 5. Jan 2005 15:07

Re: Batch zum Dateidownload
 
Code:
C:\batch>echo %date%
Mi 05.01.2005
Ich versteh´s nu auch nich mehr.

Sprint 5. Jan 2005 15:14

Re: Batch zum Dateidownload
 
Der Syntax Fehler kommt vom Freizeichen.
So sollte es gehen...
Code:
copy /Y C:\webalizer\ejvlogs\access_logs\access_log "C:\webalizer\ejvlogs\access_logs\%date%_access_log"

Akut-Programming 5. Jan 2005 15:16

Re: Batch zum Dateidownload
 
:wall: :wall: Das hab ich auch gerade gemerkt. Nur jetzt kommt ne abrfrage obs ne Datei oder n Verzeichnis ist?! Kann ich das umgehen? Hab in der Batch zwar "D" für Datei eingetragen, aber das scheint er zu überspringen?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz