nanairo
Goto Top

Mehrere Dateien nach Suche mit FOR auf FTP hochladen

Bin eig. mittlerweile recht gut in Batch, aber ich weiss einfach nicht weiter...

Also.... mein Problem!
Ich möchte einen bestimmten Ordner + Unterordner nach einer bestimmten Dateiendung durchsuchen und dann auf einem FTP-Server ein Backup davon anlegen. Soweit klappt auch alles... so sieht mein Code aus:
@echo off
ECHO OPEN *FTP-SERVER*>connect.txt
ECHO *USERNAME*>>connect.txt
ECHO *PASSWORT<*>>connect.txt
ECHO PROMPT>>connect.txt
ECHO PUT *.txt>>connect.txt
ECHO QUIT>>connect.txt

SET PFAD=C:\Users\%USERNAME\Desktop\ENT
SET FILE=*.txt
FOR  /R %PFAD% %%i IN (%FILE%) DO (ftp -s:connect.txt)

So, eigentlich klappt das auch, nur das funktioniert irgendwie nicht mit Unterordnern face-sad
Hab schon gegoogelt, Boardsuche auch, hab aber nicht wirklich was Hilfreiches gefunden...
Bin froh über jegliche Hilfe ;)

Ach ja, *FTP-SERVER*, *USERNAME* und *PASSWORT* hab ich in meinem Script natürlich durch die richtigen Werte ersetzt!

LG Nanairo

Content-Key: 174706

Url: https://administrator.de/contentid/174706

Printed on: April 24, 2024 at 09:04 o'clock

Member: bastla
bastla Oct 14, 2011 at 21:19:19 (UTC)
Goto Top
Hallo Nanairo und willkommen im Forum (ich tendiere, wie Du merkst, zu einer eher konventionellen Begrüßung -"Also.... " ist mir nicht wirklich geläufig)!

Wenn ich Dein Vorhaben richtig interpretiere, könnte ich mir das eher so vorstellen:
@echo off & setlocal
set "Pfad=%userprofile%\Desktop\ENT"  
set Script=%temp%\connect.txt

 >%Script% ECHO OPEN *FTP-SERVER*
>>%Script% ECHO *USERNAME*
>>%Script% ECHO *PASSWORT*
>>%Script% ECHO PROMPT
>>%Script% ECHO PUT *.txt
>>%Script% ECHO QUIT

pushd "%Pfad%"  
for /f "delims=" %%i in ('dir /s /b /ad') do (  
    pushd "%%i"  
    ftp -s:%Script%
    popd
)
popd

del %Script%
- das Testen überlasse ich Dir ...

Grüße
bastla
Member: Nanairo
Nanairo Oct 15, 2011 at 08:50:50 (UTC)
Goto Top
Hey,
ja, Begrüßung von mir war nicht grad die tollste, aber ich war gestern Abend schon ziemlich müde... Ach, und danke für dein "willkommen"!
Zum Thema:

Es funktioniert! Allerdings nur einmal. Sprich er kopiert nur eine Datei aus einem Unterverzeichniss auf den FTP-Server. Ich kann mit Batch eigentlich nur die ganz einfachen Sachen wie kopieren, verschieben Texte ausgeben usw... Also habe ich keinen Plan, wieso das nicht funktioniert... Vielleicht kannst du mir ja nochmal helfen ;)

LG Nanairo
Member: bastla
bastla Oct 15, 2011 at 09:01:02 (UTC)
Goto Top
Hallo Nanairo!
Ich kann mit Batch eigentlich nur die ganz einfachen Sachen
Hatte ich nach "Bin eig. mittlerweile recht gut in Batch" nicht angenommen ... face-wink

Die folgende Variante schreibt vorweg alle zu kopierenden Dateien in das Script:
@echo off & setlocal
set "Pfad=%userprofile%\Desktop\ENT"  
set Script=%temp%\connect.txt

 >%Script% ECHO OPEN *FTP-SERVER*
>>%Script% ECHO *USERNAME*
>>%Script% ECHO *PASSWORT*

pushd "%Pfad%"  
>>%Script% (for /f "delims=" %%i in ('dir /s /b /a-d *.txt') do ECHO PUT "%%i")  
popd

>>%Script% ECHO QUIT

ftp -s:%Script%
del %Script%
wobei allerdings alle Dateien auf dem Server im gleichen Verzeichnis landen (was bei Deinem Ansatz aber auch nicht anders gewesen wäre) ...

Wenn Du übrigens in Zeile 14 eine "pause" einbaust (oder das Löschen des Scripts am Ende - vorerst - weglässt), kannst Du das gesamte Script auch kontrollieren ...

Grüße
bastla
Member: Nanairo
Nanairo Oct 15, 2011 at 09:30:21 (UTC)
Goto Top
Hey,
mit dem "Bin eig. mittlerweile recht gut in Batch" meinte ich, das ich mir so halbwegs alle Befehle merken kann... Ich hab nämlich sonst immer Probleme beim Auswendiglernen und schreib mir die Befehle immer alle auf ;) Die meisten Batch-Befehle kann ich jetzt aber auswendig, deswegen (mit AutoIT die einzige Programmiersprache, bei der ich nicht immer nachgucken muss ;) ).
So, genug offtopic ;)

Das Script funktioniert wunderbar! Danke! Nur jetzt hab ich gefühlte 1000 Textdateien auf meinem FTP-Server ;) Sowas sollte man Testweise nicht auf C: laufen lassen face-smile
Ich hack das dann mal als gelöst ab!

LG Nanairo

PS: Es waren genau 1.012 Textdateien !