Hallo zusammen,
folgendes Problem:
- Möchte Daten per FTP und Batch übertragen, dies geht gut mit diesem Befehl.
OPEN ***.**.**.*
USER test
test
mput C:\test\*
mget *
disconnect
quit
Jetzt soll allerdings noch sowohl auf einem Client wie auf dem Server jeden Tag ein neuer Ordner mit dem aktuellen Datum angelegt werden.
Lokal löse ich es so
mkdir "c:\test\%date%"
Wenn ich jetzt jedoch den Befehl für das lokale erstellen per Batch an den Server übertrage, erscheint dort lediglich ein Ordner "Date" ohne Datumsbezeichnung.
Hat jemand eine Idee wie ich per Batch einen Ordner auf dem Server erstelle, der die richtige Datumsformatierung aufweist?
Seite 1 von 1
Batchdatei Zum übertragen Per Ftp
Anzeige
#2
geschrieben 19. Januar 2010 - 11:03
Lass das FTP-Script einfach von der Batch datei erstellen.
Beispiel:
Beispiel:
@echo off REM Set vars set server=127.0.0.1 set user=guest set password=guest REM login echo open %server%>> temp.tmp echo %user%>> temp.tmp echo %password%>> temp.tmp REM execute stuff echo mkdir %date%>> temp.tmp echo bye>> temp.tmp REM run the ftp script ftp -s:temp.tmp REM delete temp file del temp.tmp
#3
geschrieben 19. Januar 2010 - 12:52
Super, das geht mit dem erzeugen der Ordner. Aber wie binde ich jetzt meinen Datentransfer mit ein? Habs versucht und es läuft net.
@echo off
REM Set vars
set server=***.**.**.*
set user=test
set password=test
REM login
echo open %server%>> temp.tmp
echo %user%>> temp.tmp
echo %password%>> temp.tmp
REM execute stuff
echo mkdir %date%>> temp.tmp
echo bye>> temp.tmp
echo mput c:\test\* <<<< Möchte hier was an Server schicken, am besten in das Datumsverzeichniss was wir eben angelegt haben.
REM run the ftp script
ftp -s:temp.tmp
pause
REM delete temp file
del temp.tmp
@echo off
REM Set vars
set server=***.**.**.*
set user=test
set password=test
REM login
echo open %server%>> temp.tmp
echo %user%>> temp.tmp
echo %password%>> temp.tmp
REM execute stuff
echo mkdir %date%>> temp.tmp
echo bye>> temp.tmp
echo mput c:\test\* <<<< Möchte hier was an Server schicken, am besten in das Datumsverzeichniss was wir eben angelegt haben.
REM run the ftp script
ftp -s:temp.tmp
pause
REM delete temp file
del temp.tmp
Dieser Beitrag wurde von Blackhawk bearbeitet: 19. Januar 2010 - 12:54
#4
geschrieben 19. Januar 2010 - 13:07
Einfach die selben Befehle benutzen, nur vorher echo und danach >> temp.tmp anhaengen.
Das ganze kommt vor dem trennen der Verbindung (bye)
Das ganze kommt vor dem trennen der Verbindung (bye)
REM execute stuff echo mkdir %date%>>temp.tmp echo cd %date%>> temp.tmp echo mput *>> temp.tmp echo bye>> temp.tmp
#5
geschrieben 19. Januar 2010 - 13:54
Warum immer >>tmp.tmp. Was passiert in dieser Datei?
Denke mal das dort die Variablen hinterlegt sind. Aber warum muss der Befehl mput auch >>tmp.tmp?
EDIT: Ok, das ist jetzt auch klar. Die Daten werden dort abgearbeitet.
Desweiteren bekomme ich immer ne Abfrage " wenn ich deinen o.g. Code nutze.
"mput client.txt?" steht dort sowie sämtliche anderen Dateien. Dann kommt Bye.
EDIT: Mit dem Befehl "echo prompt >>temp
Denke mal das dort die Variablen hinterlegt sind. Aber warum muss der Befehl mput auch >>tmp.tmp?
EDIT: Ok, das ist jetzt auch klar. Die Daten werden dort abgearbeitet.
Desweiteren bekomme ich immer ne Abfrage " wenn ich deinen o.g. Code nutze.
"mput client.txt?" steht dort sowie sämtliche anderen Dateien. Dann kommt Bye.
EDIT: Mit dem Befehl "echo prompt >>temp
Dieser Beitrag wurde von Blackhawk bearbeitet: 19. Januar 2010 - 15:03
#6
geschrieben 19. Januar 2010 - 15:02
Zitat
Warum immer >>tmp.tmp. Was passiert in dieser Datei?
FTP Scripts funktionieren nunmal so, du gibst dem FTP Programm das FTP-Script und er fuehrt diese Befehle aus.
Dieses ignoriert allerdings Variablen wie %date%.
Deswegen werden mittels echo xyz>>temp.tmp das FTP-Script in eine temporaere Datei geschrieben.
Da echo mit Variablen umgehen kann werden diese auch in die Datei geschrieben.
echo %date%>>temp.tmp macht nichts weiter als das derzeitige Datum in die Datei "temp.tmp" zu schreiben.
Zitat
Desweiteren bekomme ich immer ne Abfrage " wenn ich deinen o.g. Code nutze.
"mput client.txt?" steht dort sowie sämtliche anderen Dateien. Dann kommt Bye.
"mput client.txt?" steht dort sowie sämtliche anderen Dateien. Dann kommt Bye.
Parameter -i verhindert solche Abfragen
Was mir noch auffaellt, dass mput * auch die Batch/Temp Datei hochlaedt in der das Passwort steht, hier nochmal das Script der die Temp Datei in das Temp Verzeichniss schreibt und die Batch Datei vom FTP Server wieder loescht.
CODE
@echo off
REM Set vars
set server=127.0.0.1
set user=guest
set password=guest
REM login
echo open %server%>> %temp%\batch-temp.tmp
echo %user%>> %temp%\batch-temp.tmp
echo %password%>> %temp%\batch-temp.tmp
REM erstelle dir mit datum
echo mkdir %date%>> %temp%\batch-temp.tmp
REM wechsle in das neue verzeichnis
echo cd %date%>> %temp%\batch-temp.tmp
REM lade alle dateien hoch
echo mput *>> %temp%\batch-temp.tmp
REM loesche die batch datei vom FTP server
echo del %~n0.bat >> %temp%\batch-temp.tmp
REM beende das ftp programm
echo bye>> %temp%\batch-temp.tmp
REM script aufrufen
ftp -i -s:%temp%\batch-temp.tmp
REM temp datei loeschen
del %temp%\batch-temp.tmp
REM Set vars
set server=127.0.0.1
set user=guest
set password=guest
REM login
echo open %server%>> %temp%\batch-temp.tmp
echo %user%>> %temp%\batch-temp.tmp
echo %password%>> %temp%\batch-temp.tmp
REM erstelle dir mit datum
echo mkdir %date%>> %temp%\batch-temp.tmp
REM wechsle in das neue verzeichnis
echo cd %date%>> %temp%\batch-temp.tmp
REM lade alle dateien hoch
echo mput *>> %temp%\batch-temp.tmp
REM loesche die batch datei vom FTP server
echo del %~n0.bat >> %temp%\batch-temp.tmp
REM beende das ftp programm
echo bye>> %temp%\batch-temp.tmp
REM script aufrufen
ftp -i -s:%temp%\batch-temp.tmp
REM temp datei loeschen
del %temp%\batch-temp.tmp
#7
geschrieben 19. Januar 2010 - 15:05
@echo off
REM Variablen setzen
set server=172.19.72.2
set user=test
set password=test
REM Login
echo open %server%>> temp.tmp
echo %user%>> temp.tmp
echo %password%>> temp.tmp
REM Auszufuehrende Befehle
echo prompt >> temp.tmp
echo mkdir Eingang_%date%>> temp.tmp
echo mkdir Ausgang_%date%>> temp.tmp
echo cd Eingang_%date% >> temp.tmp
echo mput c:\test\client.rar>>temp.tmp
echo lcd c:\test\ >> temp.tmp
echo mget Ausgang_%date%\* >> temp.tmp
echo bye>> temp.tmp
REM FTP Script (temp.tmp) starten
ftp -s:temp.tmp
Beim roten muss ich nen Fehler haben, wenn ich aus dem Ausgangsverzeichniss des Servers, eine Datei runterladen will sagt er immer " Verzeichniss nicht vorhanden", aber es liegt genau dort.
REM Variablen setzen
set server=172.19.72.2
set user=test
set password=test
REM Login
echo open %server%>> temp.tmp
echo %user%>> temp.tmp
echo %password%>> temp.tmp
REM Auszufuehrende Befehle
echo prompt >> temp.tmp
echo mkdir Eingang_%date%>> temp.tmp
echo mkdir Ausgang_%date%>> temp.tmp
echo cd Eingang_%date% >> temp.tmp
echo mput c:\test\client.rar>>temp.tmp
echo lcd c:\test\ >> temp.tmp
echo mget Ausgang_%date%\* >> temp.tmp
echo bye>> temp.tmp
REM FTP Script (temp.tmp) starten
ftp -s:temp.tmp
Beim roten muss ich nen Fehler haben, wenn ich aus dem Ausgangsverzeichniss des Servers, eine Datei runterladen will sagt er immer " Verzeichniss nicht vorhanden", aber es liegt genau dort.
#8
geschrieben 19. Januar 2010 - 15:20
Zitat (Blackhawk: 19.01.2010, 15:05)
echo lcd c:\test\ >> temp.tmp
echo mget Ausgang_%date%\* >> temp.tmp
[...]
Beim roten muss ich nen Fehler haben, wenn ich aus dem Ausgangsverzeichniss des Servers, eine Datei runterladen will sagt er immer " Verzeichniss nicht vorhanden", aber es liegt genau dort.
echo mget Ausgang_%date%\* >> temp.tmp
[...]
Beim roten muss ich nen Fehler haben, wenn ich aus dem Ausgangsverzeichniss des Servers, eine Datei runterladen will sagt er immer " Verzeichniss nicht vorhanden", aber es liegt genau dort.
Du bist immernoch im Ordner Eingang_%date%, wenn der Ausgang_%date% Ordner also nicht im Eingangsordner ist kann er ihn nicht finden.
Gehe einen Ordner raus.
echo mget ..\Ausgang_%date%\* >> temp.tmp
#9
geschrieben 19. Januar 2010 - 21:38
Kleine Ergänzung: Wenn du verschlüsselte Authentifizierung und/oder verschl. Übertragung willst, kannst du mal nach curl- und wget-Portierungen für Windows schaun.
Thema verteilen:
Seite 1 von 1