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

Dateien verschieben anhand vom Dateinamen

Frage Entwicklung Batch & Shell

Mitglied: Kochkaes

Kochkaes (Level 1) - Jetzt verbinden

27.09.2010 um 11:11 Uhr, 5264 Aufrufe, 4 Kommentare

Hallo Zusammen,

Ich habe das Problem, dass ich von einem FTP Server automatisch Dateien in ein Verzeichnis kopiere und diese dann anhand ihres Dateinamen in ein anderes Verzeichnis verschieben möchte.

Die jeweils ersten sechs Zeichen der Dateien sind/sollen den bereits vorhandenen Ordnernamen darstellen und jeweils dahin verschoben werden.

Dateien sehen so ähnlich aus, XXXXXX steht für eine Buchstaben/Zahlen Kombination. Die Ordner gibt es bereits.

XXXXXX_info.txt
XXXXXX_grafik.jpg
XXXXXX_noch_mehr_info.pdf

Toll wäre es auch noch, wenn man eine Logdatei mit Tagesdatum hätte zur Kontrolle.

Im Post http://www.administrator.de/index.php?content=66714 wird zwar ein ähnliches Problem beschrieben, aber den Schritt mit der Datei würde ich gerne überspringen.
Mitglied: Friemler
27.09.2010 um 12:11 Uhr
Hallo Kochkaes,

in Deiner Aufgabenstellung fehlt mir noch eine Information:

Sollen vom FTP-Server alle Dateien eines bestimmten Verzeichnisses oder nur bestimmte Dateitypen auf den lokalen Rechner kopiert werden?

Gruß
Friemler
Bitte warten ..
Mitglied: Kochkaes
27.09.2010 um 12:21 Uhr
Wow seit Ihr schnell

Es sollen alle Dateien, die sich im Ordner befinden heruntergeladen werden.

Danke für die schnelle Antwort.
Bitte warten ..
Mitglied: Friemler
27.09.2010 um 13:59 Uhr
Hallo Kochkaes,

hier ein Skript zur Lösung Deines Problems:
01.
@echo off 
02.
 
03.
setlocal disabledelayedexpansion 
04.
 
05.
cls 
06.
 
07.
set "FTPGetFiles=%TEMP%\ftpcmd.txt" 
08.
set "FTPServer=ftp.DeinServer" 
09.
set "Usr=anonymous" 
10.
set "Pwd=anonymous@example.com" 
11.
set "RemoteDir=." 
12.
set "LocalDir=E:\Test" 
13.
set "Repository=D:\Data" 
14.
 
15.
 
16.
> "%FTPGetFiles%" echo open %FTPServer% 
17.
>>"%FTPGetFiles%" echo user %Usr% %Pwd% 
18.
>>"%FTPGetFiles%" echo cd "%RemoteDir%" 
19.
>>"%FTPGetFiles%" echo lcd "%LocalDir%" 
20.
>>"%FTPGetFiles%" echo binary 
21.
>>"%FTPGetFiles%" echo prompt 
22.
>>"%FTPGetFiles%" echo mget *.* 
23.
>>"%FTPGetFiles%" echo bye 
24.
 
25.
ftp -n -s:"%FTPGetFiles%" 
26.
del "%FTPGetFiles%" 
27.
 
28.
 
29.
for /f "delims=" %%f in ('dir /b /a:-d "%LocalDir%\*.*"') do ( 
30.
  set "FileName=%%f" 
31.
  call :ProcessFile 
32.
33.
 
34.
exit /b 
35.
 
36.
 
37.
:ProcessFile 
38.
  set "DestFolder=%Repository%\%FileName:~0,6%" 
39.
  set "NewFileName=%FileName:~7%" 
40.
  move "%LocalDir%\%FileName%" "%DestFolder%\%NewFileName%" 
41.
exit /b

Einschränkungen

  • Wenn sich im Verzeichnis auf dem FTP-Server Unterverzeichnisse befinden, deren Namen einen Punkt enthalten (z.B. Meine.Texte), wird eine Fehlermeldung ausgegeben. Der Name eines solchen Verzeichnisses wird als Dateiname interpretiert. Dadurch wird versucht, das Verzeichnis als Datei herunterzuladen, was zu einer Fehlermeldung führt. Das Skript wird aber trotzdem weiter ausgeführt.
  • Dateien ohne Dateierweiterung werden nicht heruntergeladen.
  • Die Zielverzeichnisse auf dem lokalen Rechner müssen sich alle im gleichen Eltern-Verzeichnis befinden (Variable Repository).
  • Die Verarbeitung von Dateinamen, die Prozentzeichen enthalten, macht, wie üblich unter Batchskript, Probleme.


Erklärung

In den Zeilen 7 bis 13 werden alle Einstellungen für das Skript vorgenommen. Diese Variablen musst Du anpassen.

In den Zeilen 16 bis 23 wird ein temporäres FTP-Skript erzeugt, das alle benötigten Befehle enthält. OPEN öffnet die Verbindung zu einem FTP-Server mit der angegebenen Adresse. USER führt die Anmeldung mit den angegebenen Login-Daten durch. CD wechselt auf dem FTP-Server ins Verzeichnis, aus dem die Dateien heruntergeladen werden sollen. LCD wechselt das Verzeichnis auf dem lokalen Rechner, dort werden die heruntergeladenen Dateien abgelegt. BINARY schaltet in den binären Übertragungsmodus. Dadurch wird vermieden, das die heruntergeladenen Dateien (z..B. Bilder, Programme, PDF-Dateien) Datensalat enthalten. PROMPT schaltet die Einzelbestätigung zum Herunterladen jeder einzelnen Datei aus. MGET lädt mit der Dateimaske *.* alle Dateien herunter, die eine Erweiterung haben (z.B. .TXT oder .PDF). BYE schließt die Verbindung zum FTP-Server und beendet den FTP-Befehl.

In Zeile 25 wird der FTP-Befehl ausgeführt. -N verhindert eine automatische Anmeldung am Server und macht die Benutzung des FTP-Subbefehls USER möglich. -S:"Dateiname" gibt an, das die Datei "Dateiname" ein FTP-Skript mit den auszuführenden Befehlen enthält. Nach Ausführung des Skripts wird das Skript in Zeile 26 wieder gelöscht.

In Zeile 29 werden mit DIR die heruntergeladenen Dateien aufgelistet und in Zeile 30 jeder Dateiname einzeln an die Variable FileName zugewiesen. Der Parameter /b bei DIR bewirkt, das nur die Dateinamen gelistet werden ohne den üblichen Header (Verzeichnis von ... usw.) und ohne die Zusammenfassung (x Dateien, x Verzeichnisse, x Bytes frei), der Parameter /a:-d verhindert das Listen von Directories. In Zeile 31 wird das Unterprogramm ProcessFile aufgerufen.

In Zeile 34 wird das Batchskript beendet.

Im Unterprogramm ProcessFile wird in Zeile 39 der Zielpfad zusammengebaut. Von FileName werden dabei ab Offset 0 die 6 folgenden Zeichen verwendet. In Zeile 40 wird der neue Dateiname aus allen Zeichen von FileName ab dem Offset 7 (8. Zeichen, hinter dem Unterstrich in XXXXXX_YYYYY.ZZZ) bis zum Ende zusammengesetzt. In Zeile 41 wird die Datei verschoben und dabei umbenannt. Zeile 42 springt aus dem Unterprogramm zurück in die aufrufende FOR-Schleife.

Gruß
Friemler
Bitte warten ..
Mitglied: Kochkaes
27.09.2010 um 14:43 Uhr
Wow, bin total beeindruckt ... werde Script testen, kann aber etwas dauern, da es an unserem Standort in USA gebraucht wird und da gibt es Zeitverschiebung und lahme Admin's
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dateien in Unterordner anhand Dateinamen mit Trennzeichen verschieben
gelöst Frage von woswasihBatch & Shell2 Kommentare

Grüß Euch! Ich glaub ich habe gerade eine Knopf im Kopf und stehe vor folgenden Problem: Ordner mit hunderten ...

Batch & Shell
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Tipp von HopfmanBatch & Shell16 Kommentare

Ich habe eine ständig wachsende Anzahl von Dateien aus unterschiedlichen Quellen, die in Unterverzeichnisse verschoben werden sollen. So weit ...

Batch & Shell
Dateien mit Teil des Dateinamen per Batch in Unterordner verschieben
gelöst Frage von smitternachtBatch & Shell14 Kommentare

Hallo, ich muß hier Telefonmitschnitte automatisiert ablegen. Die Dateien sehen folgendermaßen aus: Richtung#interneNummerexterneNummer#Datum#Uhrzeit.wav Beispiel: In#24023147770#20160427#135844.wav (eigehend) Out#24 (ausgehend) Nun ...

Batch & Shell
Batch Dateien verschieben in Verzeichis welches Bestandteil des Dateinamens ist
gelöst Frage von skynetworksBatch & Shell5 Kommentare

Hallo zusammen, ich habe eine kleine Herausforderung: Ich muss per Batch Dateien in Unterverzeichnisse verschieben. Soweit erstmal nicht schwer ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 10 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 14 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 14 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 17 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...