Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch FTP Vezeichnis auslesen, mit lokalem Verzeichnis vergleichen, Upload Liste erstellen

Mitglied: richtig

richtig (Level 1) - Jetzt verbinden

13.09.2007, aktualisiert 16:41 Uhr, 12415 Aufrufe, 7 Kommentare

Hallo,

kann mir jemand etwas Hilfestellung bei meinem oben genannten Vorhaben leisten? Es geht um folgende Aufgabenstellung:

Ein Verzeichnis auf einem FTP Server enthält Mediendateien (hauptsächlich *.flv). Ein lokales Verzeichnis enthält ebenfalls alle Dateien. Wenn ich nun eine neue flv erstellt habe, dann soll per Skript diese neue Datei auf den FTP-Server geladen werden, so dass der Inhalt der beiden Verzeichnisse wieder identisch ist.

Verzeichnisinhalt Lokal:
Media_Datei_1.flv
Media_Datei_2.flv
Media_Datei_3.flv
Media_Datei_4.flv

Verzeichnisinhalt FTP:
Media_Datei_1.flv
Media_Datei_2.flv
Media_Datei_3.flv

Bisher habe ich folgenden Entwurf:

Teil 1: Auslesen des Remote-Verzeichnis Inhaltes:
echo BENUTZERNAME>>c:\mklistftp.txt
echo PASSWORT>>c:\mklistftp.txt
echo lcd c:\>>c:\mklistftp.txt
echo dir /media listftp.txt>>c:\mklistftp.txt
echo bye>>c:\mklistftp.txt
ftp -s:mklistftp.txt FTP.SERVERNAME.DE
del c:\mklistftp.txt

Inhalt der erstellten Datei listftp.txt:
-rw-r--r-- 1 ftp ftp 4554711 Sep 12 11:38 Media_Datei_1.flv
-rw-r--r-- 1 ftp ftp 7169546 Sep 12 11:41 Media_Datei_2.flv
-rw-r--r-- 1 ftp ftp 7475796 Sep 12 11:44 Media_Datei_3.flv

Teil 2: Vergleichen des Lokalen Verzeichnisinhaltes d:\media mit den Einträgen in listftp.txt und erstellen einer FTP-Batch-Datei:
::FTP Transfer Kopf
echo FTP.SERVERNAME.DE>>c:\putftp.txt
echo PASSWORT>>c:\putftp.txt
echo cd media>>c:\putftp.txt

::FTP Transfer Rumpf
for %%i in ("d:\media\*.*") do (
for /f "tokens=9 delims= " %%k in ('findstr /e /c:%%~nxi c:\listftp.txt') do (
echo put %%k>>putftp.txt
)
)


::FTP Transfer Fuß
echo bye>>c:\putftp.txt
echo exit>>c:\putftp.txt

Inhalt der Datei putftp.txt:
BENUTZERNAME
PASSWORT
cd media
put Media_Datei_1.flv
put Media_Datei_2.flv
put Media_Datei_3.flv
bye
exit

Leider habe ich hier das Problem, dass ich nur die Dateien aufgelistet bekomme, die bereits Vorhanden sind. Die, die ich eigentlich gelistet haben möchte sind nicht dabei. Wo liegt der Fehler? Ist es möglich in die for schleife vor das findstr noch ein if not einzubauen?

Vielen Dank schonmal fürs Lesen ;)
grussascha
Mitglied: bastla
13.09.2007 um 16:10 Uhr
Hallo richtig!

Vielleicht vorweg der Hinweis, dass Du im Forum einige Threads zum Thema "Synchronisieren" mit Tipps für entsprechende Software finden solltest ...
Da ich momentan nicht mehr Zeit habe, nur als (ungetesteter) Ansatz: Ersetze den Code für den "FTP Transfer Rumpf" durch
01.
for %%i in ("d:\media\*.*") do findstr /e /c:"%%~nxi" c:\listftp.txt>nul || echo put %%k>>putftp.txt
Grüße
bastla
Bitte warten ..
Mitglied: richtig
13.09.2007 um 16:29 Uhr
hallo batch gott,

erstmal danke für deine schnelle antwort. du hast glaube ich %%k mit %%i verwechselt, oder? mit %%k kam als echo nur put %k; wenn ich %%i verwende klappts

ich werde das alles mal so zusammenschreiben, dass es einigermaßen geht und mich dann nochmal melden mit dem endgültigen ergebnis.

kannst du mir in einer ruhigen minute vielleicht mal die bedeutung von >nul || erklären? das hab ich jetzt schön des öfteren mal gesehen aber was es genau bedeutet hab ich nicht gefunden.

bis dahin noch eine angenehme woche und frohes schaffen,

grussascha
Bitte warten ..
Mitglied: bastla
13.09.2007 um 16:41 Uhr
Hallo richtig!

du hast glaube ich %%k mit %%i verwechselt, oder?
Aus Deiner Fassung kopiert und zu ändern vergessen.

kannst du mir in einer ruhigen minute vielleicht mal die bedeutung von >nul || erklären?
Die eine Minute habe ich grade noch ...

">nul" hat nur die Aufgabe, die Ausgabe der gefundenen Zeile zu verhindern (wenn Du es weglässt, ändert sich nichts an der übrigen Funktionalität).

"||" ist die Kurzfassung für "if %errorlevel% gtr 0" - die darauf folgende Anweisung wird ausgeführt, wenn der vorige Befehl mit Fehler beendet wurde (was bei "findstr" eben der Fall ist, wenn es keine passende Zeile gab).

Das Gegenstück zu "||" ist "&&" - der damit angehängte Befehl wird nur ausgeführt, wenn die vorherige Anweisung keinen Fehler lieferte.

Schließlich gibt es noch "&" zum Aneinanderfügen von Befehlen ohne irgendeine Bedingung.

Grüße
bastla
Bitte warten ..
Mitglied: mybusiness1987
20.06.2012 um 16:31 Uhr
Hallo, bin gerade dabei, das Ganze für meine Bedürfnisse anzupassen. Leider bekomme ich eine Sache nicht hin.

Meine Schleife sieht momentan folgender Maßen aus:

for %%i in ("C:\Automatisierung\aktuell\*.*") do (findstr /e /c:"%%~ftzai" %cd%\aktuell.log>nul || echo put %%i>>putftp.txt)

Mein Problem ist folgendes... die Schleife listet alle Dateien auf, sobald eine neue Datei erzeugt oder eine vorhandene angepasst wurde. Ich möchte die Schleife so anpassen, dass nur die neuen oder angepassten Dateien aufgelistet werden.

Hoffe ihr könnt mir da weiterhelfen. Danke

Gruß Armin
Bitte warten ..
Mitglied: bastla
20.06.2012 um 21:25 Uhr
Hallo mybusiness1987!

Du könntest auf das Archiv-Flag zurückgreifen und es (ungetestet) etwa so versuchen:
for /f "delims=" %%i in ('dir /b/aa-d "C:\Automatisierung\aktuell"') do attrib -a "C:\Automatisierung\aktuell\%%~i" & >>putftp.txt echo put "C:\Automatisierung\aktuell\%%~i"
Damit werden nur Dateien aus "C:\Automatisierung\aktuell", bei denen das Archiv-Flag gesetzt ist (weil sie seit dem letzten Mal neu gespeichert wurden), berücksichtigt.
BTW: Die Angabe von %cd% in einem Pfad ist so gut wie immer sinnlos (da ohnehin defaultmäßig der aktuelle Pfad verwendet wird) ...

Grüße
bastla
Bitte warten ..
Mitglied: mybusiness1987
21.06.2012 um 10:11 Uhr
Hallo bastla, vielen Dank für deine schnelle Antwort. So funktioniert das genau so wie ich es haben wollte

Da ich jedoch totaler Noob in Sachen Batch bzw. Programmierung bin, wäre ich dir dankbar, wenn du mir das Ganze auch Schritt für Schritt erklären könntest.

Gruß Armin
Bitte warten ..
Mitglied: mybusiness1987
21.06.2012 um 16:18 Uhr
Hallo bastla, hab das Ganze jetzt nochmal durchgeprüft, leider funktioniert das jetzt doch nicht so wie ich es gern hätte

Wenn ich das richtig verstehe, dann setzt die Schleife für jede Datei eine Markierung, und gibt dann die Dateien, die noch nicht geflagt wurden aus!?

Das funktioniert soweit echt super wenn es darum geht, dass neu erstellte und geänderte Dateien auf den FTP übertragen werden sollen, aber leider habe ich folgende Probleme:

1. Falls mal jemand zufällig Dateien, die auf dem FTP liegen löscht, werden diese nicht mehr übertragen, wenn sie schon auf der Gegenseite geflagt sind und keine Änderung stattgefunden hat.

2. Wenn ich auf meinem lokalen Laufwerk Dateien lösche, möchte ich gerne, dass diese auf dem FTP ebenso gelöscht werden bzw. dass beide Verzeichnisse, sowohl lokal als auch auf FTP identisch sind.

Entschuldige, dass ich dich hier so überfalle, aber weis leider nicht wie ich das lösen soll, jeglicher Versuch ist bisher gescheitert


Vielen Dank nochmal

Grüße Armin
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch passives FTP upload
gelöst Frage von weltklasseBatch & Shell2 Kommentare

Hallo, ich versuche per Batch eine Textdatei auf einen FTP-Server hochzuladen. Es handelt sich um einen "passiven FTP-Zugriff". Leider ...

Windows Tools

Batch Verzeichnis vergleichen, in einer anderes kopieren

Frage von cappu25Windows Tools11 Kommentare

Halloo an alle, ich habe jetzt schon verdammt lange rumprobiert und gegooglet aber ich bekomme keine Lösung hin. Folgendes: ...

Windows Server

FTP Upload per Batch in Aufgabenplanung nicht möglich

gelöst Frage von Daniel0705Windows Server4 Kommentare

Sehr geehrter Forumsmitglieder, aktuell habe ich folgendes Problem: Ich habe mir eine kleine Batch-Datei erstellt, welche aus einer View ...

Netzwerkgrundlagen

Ftp upload Geschwindigkeit sehr langsam??

gelöst Frage von SteffenBNetzwerkgrundlagen14 Kommentare

Hallo liebe User, ich hoffe das ist das richtige Thema für meine Fragen!? Ich bin ein ganz normaler Endnutzer ...

Neue Wissensbeiträge
SAN, NAS, DAS
QNAP NAS Datenschutz-Loop nach Firmware-Update
Tipp von vanTast vor 9 StundenSAN, NAS, DAS1 Kommentar

Moin, im allgemeinen Trend seine geänderten Datenschutzbedingungen den Kunden zukommen zu lassen kam die Firma QNAP auf die glorreiche ...

Datenschutz
DSGVO Datenschutzgesetz
Anleitung von 1Werner1 vor 10 StundenDatenschutz4 Kommentare

Moin, ja was ist das, da ist die DSGVO Datenschutzverordnung. Wie das Gesetz gibt es schon 2 Jahre? Nun ...

CPU, RAM, Mainboards
Neverending story
Tipp von keine-ahnung vor 1 TagCPU, RAM, Mainboards1 Kommentar

Da kommt man mit dem fixen gar nicht mehr hinterher und die CPU erreichen wieder Rechenleistungen im Bereich des ...

Multimedia & Zubehör
AVM Fritz USB WLAN Sticks schneller einschalten
Tipp von NetzwerkDude vor 3 TagenMultimedia & Zubehör4 Kommentare

Die AVM Fritz WLAN Sticks haben in der Firmware 2 Modis: Einmal als Massenspeicher und einmal als WLAN Netzwerkkarte ...

Heiß diskutierte Inhalte
PHP
Nach Umzug zu 1und1 bekomme ich beim Eintrag in die DB Tabelle folgenden Fehler
gelöst Frage von jensgebkenPHP35 Kommentare

INSERT command denied to user 'dbo45342345342231244'@'112.127.102.073' for table 'orders'

LAN, WAN, Wireless
Powerline über zwei Stockwerke optimieren
gelöst Frage von DultusLAN, WAN, Wireless33 Kommentare

Guten Morgen liebes Forum, ich hätte einmal eine Frage bezüglich Powerline Adapter: Mein Problem ist seit gestern präsent, da ...

Windows Userverwaltung
Problem mit Benutzerprofil
Frage von lieferscheinWindows Userverwaltung24 Kommentare

Guten Tag liebe Community, folgendes Problem habe ich: User meldet sich auf Client A an - sein Homelaufwerk verbindet. ...

Off Topic
DISKUSSION: Was bringt der Disclaimer "Wenn Sie nicht der Empfänger sind."
Frage von N8DragonOff Topic21 Kommentare

So oder ähnlich, lese ich immer wieder Kleingedrucktes am Ende diverser Mails. Letzten Endes wollen sie mir alle sagen, ...