WinFuture-Forum.de: Batchdatei Zum übertragen Per Ftp - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batchdatei Zum übertragen Per Ftp


#1 Mitglied ist offline   Blackhawk 

  • Gruppe: aktive Mitglieder
  • Beiträge: 478
  • Beigetreten: 02. Juni 02
  • Reputation: 0
  • Wohnort:NRW

  geschrieben 19. Januar 2010 - 10:03

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?
0

Anzeige



#2 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

geschrieben 19. Januar 2010 - 11:03

Lass das FTP-Script einfach von der Batch datei erstellen.
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

0

#3 Mitglied ist offline   Blackhawk 

  • Gruppe: aktive Mitglieder
  • Beiträge: 478
  • Beigetreten: 02. Juni 02
  • Reputation: 0
  • Wohnort:NRW

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

Dieser Beitrag wurde von Blackhawk bearbeitet: 19. Januar 2010 - 12:54

0

#4 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

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)
REM execute stuff
echo mkdir %date%>>temp.tmp
echo cd %date%>> temp.tmp
echo mput *>> temp.tmp

echo bye>> temp.tmp

0

#5 Mitglied ist offline   Blackhawk 

  • Gruppe: aktive Mitglieder
  • Beiträge: 478
  • Beigetreten: 02. Juni 02
  • Reputation: 0
  • Wohnort:NRW

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

Dieser Beitrag wurde von Blackhawk bearbeitet: 19. Januar 2010 - 15:03

0

#6 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

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.


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

0

#7 Mitglied ist offline   Blackhawk 

  • Gruppe: aktive Mitglieder
  • Beiträge: 478
  • Beigetreten: 02. Juni 02
  • Reputation: 0
  • Wohnort:NRW

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.
0

#8 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

geschrieben 19. Januar 2010 - 15:20

Beitrag anzeigenZitat (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.


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
0

#9 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

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.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0