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

Eine Batch anpassen... FTP

Frage Entwicklung Batch & Shell

Mitglied: zeroblue2005

zeroblue2005 (Level 2) - Jetzt verbinden

12.02.2014 um 18:18 Uhr, 2135 Aufrufe, 5 Kommentare, 1 Danke

Hallo Zusammen,

Bastla hat mich auf diese Batch aufmersam gemacht:

@echo off & setlocal


::Daten für die FTP-Verbindung
set "FTPServer=Server"
set "FTPUser=Username"
set "FTPPassword=Passwort"
set "FTPDir=/"
set "FTPFileType=zip"

::Pfade von temporären Dateien
set "GetFTPDirListing=%TEMP%\GetFTPDirListing.txt"
set "FTPDirListing=%TEMP%\FTPDirListing.txt"
set "FTPDirListing2=%TEMP%\FTPDirListing2.txt"


::Die temporäre Datei leeren, die das Verzeichnislisting aufnimmt
type NUL > "%FTPDirListing%"

::FTP-Script in temporäre Datei schreiben
"%GetFTPDirListing%" echo open %FTPServer%
>>"%GetFTPDirListing%" echo user %FTPUser% %FTPPassword%
>>"%GetFTPDirListing%" echo ascii
>>"%GetFTPDirListing%" echo cd "%FTPDir%"
>>"%GetFTPDirListing%" echo ls -l "%FTPDirListing%"
>>"%GetFTPDirListing%" echo bye

::FTP-Script ausführen
::Das Verzeichnislisting wird dabei lokal in eine temporäre Datei geschrieben
ftp /inv /s:"%GetFTPDirListing%" > NUL


::Aus dem Verzeichnislisting die Zeilen herausfiltern, die Dateien des gewünschten Typs enthalten
::Die Angaben zum Datum und den Dateinamen an das Unterprogramm ProcessFile übergeben
::Dessen Ausgaben werden in eine temporäre Datei umgeleitet
(for /f "tokens=6-8*" %%a in ('findstr /i /r /c:"^-.*\.%FTPFileType%$" "%FTPDirListing%" 2^>NUL') do (
call :ProcessFile %%c %%a %%b "%%d"
)) > "%FTPDirListing2%"


::Die im letzten Schritt erzeugte Datei mit SORT in absteigender Reihenfolge sortieren
::Dadurch steht die jüngste Datei in der ersten Zeile. Diese Zeile auslesen und dann Abbruch
for /f "tokens=3*" %%a in ('sort /r "%FTPDirListing2%" 2^>NUL') do (
set "NewestFile=%%b"
goto :ReadResultLoopBreak
)

:ReadResultLoopBreak
::Ergebnis ausgeben
echo.%NewestFile%


::Temporäre Dateien löschen
del "%FTPDirListing%"
del "%FTPDirListing2%"
del "%GetFTPDirListing%"

::Script Ende
exit /b 0



::Unterprogramm
::Erzeugung der 2-stelligen numerischen Darstellung eines Monatsnamens
:ProcessFile
set "MonthNames=Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
set "MonthA=%2"
set /a MonthN=0

::Monatsnummer aus dem Namen ermitteln
for %%m in (%MonthNames%) do (
set /a MonthN+=1
if /i "%%m" equ "%MonthA%" goto :MapLoopBreak
)

:MapLoopBreak
::Aus der Monatsnummer die 2-stellige Darstellung erzeugen
set "MonthN=0%MonthN%"
set "MonthN=%MonthN:~-2%"

::Datum und Dateiname ausgeben
::Anschließend ein Zeilenumbruch
<NUL set /p "=%1 %MonthN% %3 %~4"
echo.

::Back to caller
exit /b 0

So weit so gut, muss aber ehrlich zugeben! Das ich das Ganze Konstrukt nicht ganz verstehe! Was ich verstehe ist:

Verbindung wird aufgebaut und eine Liste wird erzeugt und als tmp Datei gespeichert oder so dann kann man wohl die Sortierung Ändern und was mit Datum Monaten usw. aber so richt schlau werde ich nicht daraus. Meine Anforderung ist:

Starte eine FTP Verbindung über Windows FTP log dich ein und prüfen ob die Datei-xyz vorhanden ist und das aktuelle Datum von heute trägt!
Wenn Ja schreibe in die LOG: Name des FTP-ServerAdresse Datum und Uhrzeit und das Wort OK vorhanden!

Wenn FTP-Server nicht erreichbar ist oder die Datei nicht das heutige Datum trägt, schreibe in die LOG auch Datum und Uhrzeit und das Wort Fehler!

Kann mir jemand das Ding anpassen? Alleine bekomme ich das nicht hin, vielen Dank!
Mitglied: Clijsters
13.02.2014 um 23:06 Uhr
Verbindung wird aufgebaut und eine Liste wird erzeugt und als tmp Datei gespeichert oder so dann kann man wohl die Sortierung Ändern und was mit Datum Monaten usw.
aber so richt schlau werde ich nicht daraus. Meine Anforderung ist:
Da scheint jemand lyrische Meisterwerke zu konstruieren.

Hallo zeroblue2005,

Ich habe den Code überflogen und gehe davon aus, alles funktioniert, wie es soll.
Wenn ich es richtig sehe, tut diese Batch fast, was du möchtest.
Sie spuckt dir am Ende den Namen der neuesten Datei auf dem Server aus.

Könntest du vielleicht nochmal genau und in Ruhe erklären, was die Problematik ist, was Dein Ziel ist und was du nicht verstehst?


Beste Grüße
Dominique
Bitte warten ..
Mitglied: zeroblue2005
14.02.2014 um 07:12 Uhr
Hallo,

danke! Ich finde das Gebilde auch heftig! Ich habe folgende Zielsetzung:

Starte eine FTP Verbindung über Windows FTP log dich ein und prüfen ob die Datei-xyz vorhanden ist und das aktuelle Datum von heute trägt!
Wenn Ja schreibe in die LOG: Name des FTP-ServerAdresse Datum und Uhrzeit und das Wort OK vorhanden!

Wenn FTP-Server nicht erreichbar ist oder die Datei nicht das heutige Datum trägt, schreibe in die LOG auch Datum und Uhrzeit und das Wort Fehler!
Bitte warten ..
Mitglied: Clijsters
14.02.2014 um 16:00 Uhr
Hi,

so heftig ist es nicht. Mit Code-Tags wäre es sicher recht übersichtlich. Wie auch immer.

Nimm dir doch mal das obige Script und schnipsel die für dich relevanten Teile heraus.

An dieser Stelle
01.
::Aus dem Verzeichnislisting die Zeilen herausfiltern, die Dateien des gewünschten Typs enthalten 
02.
::Die Angaben zum Datum und den Dateinamen an das Unterprogramm ProcessFile übergeben 
03.
::Dessen Ausgaben werden in eine temporäre Datei umgeleitet 
04.
(for /f "tokens=6-8*" %%a in ('findstr /i /r /c:"^-.*\.%FTPFileType%$" "%FTPDirListing%" 2^>NUL') do ( 
05.
	call :ProcessFile %%c %%a %%b "%%d" 
06.
)) > "%FTPDirListing2%" 
07.
REM Ich hoffe, mit den Umbrüchen habe ich keine Syntax zerhackt.
werden alle für dich relevanten Informationen ermittelt

und in der Sprungmarke "ProcessFile" und "MapLoopBreak" verarbeitet:
01.
::Erzeugung der 2-stelligen numerischen Darstellung eines Monatsnamens 
02.
 
03.
:ProcessFile 
04.
set "MonthNames=Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec" 
05.
set "MonthA=%2" 
06.
set /a MonthN=0 
07.
 
08.
::Monatsnummer aus dem Namen ermitteln 
09.
for %%m in (%MonthNames%) do ( 
10.
	set /a MonthN+=1 
11.
	if /i "%%m" equ "%MonthA%" goto :MapLoopBreak 
12.
13.
 
14.
:MapLoopBreak 
15.
::Aus der Monatsnummer die 2-stellige Darstellung erzeugen 
16.
set "MonthN=0%MonthN%" 
17.
set "MonthN=%MonthN:~-2%" 
18.
 
19.
::Datum und Dateiname ausgeben 
20.
<NUL set /p "=%1 %MonthN% %3 %~4"
Das ist den Kommentaren so zu entnehmen.

Hast du den Ablauf dieser Snippets denn verstanden?
Wir könnten nun hingehen und die ermittelten Daten mit dem heutigen Datum vergleichen.
Ist eine Datei also "von heute", so schreiben wir wie hier:
01.
::Die temporäre Datei leeren, die das Verzeichnislisting aufnimmt 
02.
type NUL > "%FTPDirListing%" 
03.
 
04.
::FTP-Script in temporäre Datei schreiben 
05.
>>"%GetFTPDirListing%" echo open %FTPServer% 
06.
>>"%GetFTPDirListing%" echo user %FTPUser% %FTPPassword% 
07.
>>"%GetFTPDirListing%" echo ascii 
08.
>>"%GetFTPDirListing%" echo cd "%FTPDir%" 
09.
>>"%GetFTPDirListing%" echo ls -l "%FTPDirListing%" 
10.
>>"%GetFTPDirListing%" echo bye
eine neue Abfolge von FTP-Befehlen die die "erkannte Datei" herunterlädt und führen diese aus.

Versuch doch mal mithilfe der Vorlage (bzw. einzelner Teile daraus) einen Entwurf zu erstellen und poste ihn.

Beste Grüße
Dominique
Bitte warten ..
Mitglied: Clijsters
20.02.2014 um 19:12 Uhr
Hi Zeroblue2005,

konnte dir das weiter helfen? Ist das Problem gelöst?

Beste Grüße
Dominique
Bitte warten ..
Mitglied: zeroblue2005
21.02.2014 um 06:56 Uhr
Hallo,

nein leider noch nicht, als ich deine Zeilen überflogen habe, ist mir doch erst mal klar geworden, dass ich nur gerade mal 50% von dem was in dem Skript steht verstehe, um mir das zu bauen was ich brauche! Ich muss mich mal intensiv damit beschäftigen, leider fehlte mir die Zeit in den letzten Tagen.

Mal sehen vieleicht gehe ich da gleich mal ran! Ich finde es aber super nett von dir, dass du nachfragst
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch für Verbindungscheck und VPN anpassen
Frage von wescraven07Batch & Shell4 Kommentare

Hallo Leude, habe mir mit Hilfe eine Batch zusammengebaut, die bei Start einen Verbindungscheck ausführt und bei Bedarf VPN ...

Batch & Shell
Batch-Skript anpassen
gelöst Frage von Sideshow88Batch & Shell9 Kommentare

Hallo liebe Community, ich möchte gerne ein Batch-Skript, welches den Status diverser Krankenhausschnittstellen anzeigt, dahingehen ändern, dass es einen ...

Batch & Shell
Batch Registry auslesen - anpassen
gelöst Frage von pi0h.kkBatch & Shell5 Kommentare

Hallo Zusammen, ich versuche seit einiger Zeit eine ausgelesen Reg-Datei anzupassen, sodass sie als *.ini von einer Applikation genutzt ...

Batch & Shell
Ftp Port öffnen mit batch
gelöst Frage von dax4funBatch & Shell5 Kommentare

hi, wenn ich mit XP SP3 port 21 öffne wird wieder per GUI nachgefragt weiterhin blockieren ? kann man ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 11 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 15 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...