DOS FTP Upload von Dateien in unbekannten Unterordner
Hi,
habe eine Frage...
und zwar hab ich ne Batch Datei, welche eigentlich Bilder vom Ordner c:\users\%Username%\Pictures\ uploaden soll.
jetzt hab ich folgendes geschrieben:
@ftp -i -s:"%~f0"&GOTO:EOF
open irgendeinServer123.de.funpic.de
Username
Passwort
cd bilder
lcd ..
lcd Pictures
binary
mput *.*
bye
jetzt aber das problem: Die unterordner werden leider nicht mit geuploaded, weil es ja nur dateien uploaded...
hat jemand vielleicht eine lösung?
(ich hab nicht so viel ahnung von den automatisierten DOS :D also IF und sowas kann ich eig gar nich mit umgehen, weswegen es schön wäre, wenn man jede einzelne Zeile für mich erklären könnte und möglichst auch die parameter ... also ich kann ein bisschen Visual Basic, weswegen ihr mir nicht erklären müsst was ne variable ist und was ne variablendeklaration)
schonmal danke im vorraus
MfG Cowboy
[Edit Biber] Servernamen verallgemeinert [/Edit]^^
habe eine Frage...
und zwar hab ich ne Batch Datei, welche eigentlich Bilder vom Ordner c:\users\%Username%\Pictures\ uploaden soll.
jetzt hab ich folgendes geschrieben:
@ftp -i -s:"%~f0"&GOTO:EOF
open irgendeinServer123.de.funpic.de
Username
Passwort
cd bilder
lcd ..
lcd Pictures
binary
mput *.*
bye
jetzt aber das problem: Die unterordner werden leider nicht mit geuploaded, weil es ja nur dateien uploaded...
hat jemand vielleicht eine lösung?
(ich hab nicht so viel ahnung von den automatisierten DOS :D also IF und sowas kann ich eig gar nich mit umgehen, weswegen es schön wäre, wenn man jede einzelne Zeile für mich erklären könnte und möglichst auch die parameter ... also ich kann ein bisschen Visual Basic, weswegen ihr mir nicht erklären müsst was ne variable ist und was ne variablendeklaration)
schonmal danke im vorraus
MfG Cowboy
[Edit Biber] Servernamen verallgemeinert [/Edit]^^
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 161098
Url: https://administrator.de/forum/dos-ftp-upload-von-dateien-in-unbekannten-unterordner-161098.html
Ausgedruckt am: 18.05.2025 um 07:05 Uhr
6 Kommentare
Neuester Kommentar
Hallo Cowboy und willkommen im Forum!
Falls ich das richtig verstanden habe, könnte es so gehen:
wobei die Zeilen 14 bis 16 nur zum Testen da sind. Es würde sich übrigens anbieten, in Zeile 2 zunächst einen Pfad zu einem Testordner mit nur ein paar Bildern und 2 Unterordnern anzugeben - damit sollte schon deutlich werden, ob der Ablauf Deinen Vorstellungen entspricht.
Nachdem der Inhalt des Scripts auf dem Bildschirm ausgegeben wurde, kannst Du übrigens den tatsächlichen Upload noch per Strg + c bzw Strg + Pause-Taste verhindern ...
Noch eine kurze Erklärung des Ablaufes: Das Upload-Script wird erst zur Laufzeit im Temp-Ordner erstellt (und danach auch wieder gelöscht), damit alle Unterordner einzeln per "
eingeben - dabei wird nur eine Bildschirmausgabe erzeugt und nix erstellt oder hochgeladen. Bitte beachten: In einem Batch werden für Laufvariable einer Schleife (hier: %%i) 2 Prozentzeichen geschrieben, bei Direkteingabe an der Kommandozeile nur eines.
Grüße
bastla
P.S.: Die Zeile 5 musst Du natürlich an den Namen Deines Servers (den ich ganz nebenbei nicht hier veröffentlichen würde) anpassen ...
Falls ich das richtig verstanden habe, könnte es so gehen:
@echo off & setlocal
set "Bilder=D:\Pictures"
set "Script=%temp%\upload.txt"
> "%Script%" echo open Server
>>"%Script%" echo Username
>>"%Script%" echo Passwort
>>"%Script%" echo cd bilder
>>"%Script%" echo lcd "%Bilder%"
>>"%Script%" echo binary
for /f "delims=" %%i in ('dir /b /ad "%Bilder%"') do >>"%Script%" echo mput "%%i"
>>"%Script%" echo mput *.*
>>"%Script%" echo bye
echo Scriptinhalt:
type "%Script%"
pause
ftp -i -s:"%Script%"
del "%Script%"
Nachdem der Inhalt des Scripts auf dem Bildschirm ausgegeben wurde, kannst Du übrigens den tatsächlichen Upload noch per Strg + c bzw Strg + Pause-Taste verhindern ...
Noch eine kurze Erklärung des Ablaufes: Das Upload-Script wird erst zur Laufzeit im Temp-Ordner erstellt (und danach auch wieder gelöscht), damit alle Unterordner einzeln per "
mput Ordnername
" übertragen werden können. Dazu wird mit der "for /f
"-Schleife jeder Unterordner des in %Bilder% stehenden Basispfades abgeklappert - wenn Du das nachvollziehen willst, einfach in einer CMD-Shellfor /f "delims=" %i in ('dir /b /ad "D:\Bilder"') do echo mput "%i"
Grüße
bastla
P.S.: Die Zeile 5 musst Du natürlich an den Namen Deines Servers (den ich ganz nebenbei nicht hier veröffentlichen würde) anpassen ...
Hallo Cowboy!
richtig interpretierst) ...

Vermutlich (ich habe das nicht getestet) wird mit
eben nicht, wie geplant, der Ordner übertragen, sondern "Test231" als Dateiname interpretiert, obwohl im Web die Behauptung
"Windows ftp client can do folders. Just do mput <foldername>"
zu finden war ...
Na gut, dann eben ganz ausführlich:
Grüße
bastla
vielleicht eine andere variable als "%%i"...
... bringt genau keinen Unterschied ...weil "%%i" dann im kompletten pfad als "C:\Users\%Username%\Pictures\"Test231"\" angezeigt werden würde, was fehler hervorrufen würde...
Wird es aber nicht, was Du leicht nachvollziehen kannst, indem Du einen Blick in das (genau zu diesen Testzwecken angezeigte) Skript wirfst (oder einfach nur die Zeileftp> mput "Test231"
aber wie ich das genau verändern muss weiss ich auch nicht genau
No problem, musst Du ohnehin nicht ...Vermutlich (ich habe das nicht getestet) wird mit
mput "Test231"
"Windows ftp client can do folders. Just do mput <foldername>"
zu finden war ...
Na gut, dann eben ganz ausführlich:
@echo off & setlocal
set "Bilder=D:\Pictures"
set "Script=%temp%\upload.txt"
> "%Script%" echo open Server
>>"%Script%" echo Username
>>"%Script%" echo Passwort
>>"%Script%" echo cd bilder
>>"%Script%" echo lcd "%Bilder%"
>>"%Script%" echo binary
for /f "delims=" %%i in ('dir /b /ad "%Bilder%"') do (
echo mkdir "%%i"
echo cd "%%i"
echo mput "%%i\*.*"
echo cd ..
)>>"%Script%"
>>"%Script%" echo mput *.*
>>"%Script%" echo bye
echo Scriptinhalt:
type "%Script%"
pause
ftp -i -s:"%Script%"
del "%Script%"
bastla
Hallo Cowboy!
Freut mich, wenn's jetzt klappt ...
(und ansonsten, wie so vieles, by doing) ...
Grüße
bastla
Freut mich, wenn's jetzt klappt ...
bis auf die parameter /f, /b, /ad... hab ich das programm sogar verstanden
Kannst Du ja einfach nachlesen: "dir /?
", "for /?
" - und dazu auch das passende Tutorial zur FOR-Schleife ...wo lernt man sowas? 
Na hier natürlich Grüße
bastla