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

gelöst Dateien mittels Batch, Script in verschiedene Ordner verschieben

Mitglied: Hausboot

Hausboot (Level 1) - Jetzt verbinden

20.08.2008, aktualisiert 18.10.2012, 7129 Aufrufe, 12 Kommentare

Hallo in die Runde,

da ich in der Script bzw Batcherstellung Neuling bin, möchte ich mich an die erfahrenen Anwender wenden.
Folgendes Problem:
In einem Ordner habe ich Dateien, die ich per Script, bzw Batchdatei in die dazugehörigen Ordnern in einem anderen Laufwerk verschieben will. Gleichzeitig soll eine Log.Datei erstellt werden, deren Inhalt die Dateinamen anzeigt, die verschoben worden sind.
Beispiel 1:
Quelldatei: d:\\Hausverwaltung\\Köln_2008.07.01_5002723.pdf
Diese Datei soll auf Laufwerk T:\\Haus\\50027xx\\5002723\\01_Mietverträge\\014_Verwaltung\\0141_Verträge verschoben werden.
Beispiel 2:
Quelldatei: d:\\Hausverwaltung\\Düsseldorf_2008.08.15_8003841.pdf
Diese Datei soll auf Laufwerk T:\\Haus\\80038xx\\8003841\\01_Mietverträge\\014_Verwaltung\\0141_Verträge verschoben werden.
Im Voraus vielen Dank.
Mitglied: bastla
20.08.2008, aktualisiert 18.10.2012
Hallo Hausboot und willkommen im Forum!

Aus Deinen Beispielen entnehme ich, dass eigentlich nur die jeweilige Objektnummer (zB 5002723) bzw deren erste 5 Stellen als variable Bestandteile zu verwenden sind, während der Rest des Pfades als konstant betrachtet werden kann.

Wenn die Namenskonvention "Ort_Datum_Objektnummer" konsequent eingehalten wurde, könnte das etwa so gehen:
01.
@echo off & setlocal 
02.
for /f "tokens=2 delims=:." %%i in ('chcp') do set "cp=%%i" 
03.
chcp 1252>nul 
04.
 
05.
set "Quelle=D:\Hausverwaltung" 
06.
set "Ziel=T:\Haus" 
07.
set "ZielUnter=01_Mietverträge\014_Verwaltung\0141_Verträge verschoben" 
08.
set "Log=D:\Verträge_verschoben.log" 
09.
 
10.
if exist "%Log%" del "%Log%" 
11.
for %%i in ("%Quelle%\*.pdf") do call :ProcessFile "%%~fi" 
12.
chcp %cp%>nul 
13.
goto :eof 
14.
 
15.
:ProcessFile 
16.
for /f "tokens=3 delims=_" %%a in ("%~n1") do set "Obj=%%a" 
17.
set "ZielPfad=%Ziel%\%Obj:~,5%xx\%Obj%\%ZielUnter%" 
18.
if not exist "%ZielPfad%\" md "%ZielPfad%" 2>nul || (echo ## "%Zielpfad%" ist nicht vorhanden!>>"%Log%" & goto :eof) 
19.
if exist "%Zielpfad%\%~nx1" echo ## Datei %1 in "%Zielpfad%" bereits vorhanden!>>"%Log%" & goto :eof 
20.
move %1 "%Zielpfad%\" && echo %1 verschoben nach "%Zielpfad%">>"%Log%" 
21.
goto :eof
Wegen der Umlaute in den Ordnernamen musst Du entweder einen Editor, der das ASCII-Format unterstützt, oder (wie etwa hier gezeigt) die Codepage 1252 verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: Hausboot
21.08.2008 um 09:41 Uhr
Guten Morgen Bastla,

vielen Dank für die schnelle Antwort.
Der Lösungsansatz entspricht nicht ganz dessen, was ich mir vorgestellt hatte.
Der Zielpfad ist variabel.
>>Quelldatei: d:\Hausverwaltung\Köln_2008.07.01_5002723.pdf
Diese Datei soll auf Laufwerk T:\Haus\50027xx\5002723\01_Mietverträge\014_Verwaltung\0141_Verträge verschoben werden.<<
Der variable Teil besteht in diesem Beispiel aus ...\50027xx\5002723\.... . Die Ordner davor und hahinter sind immer die Gleichen.

Grüße
Hausboot
Bitte warten ..
Mitglied: bastla
21.08.2008 um 10:47 Uhr
Hallo Hausboot!

Der Zielpfad ist variabel.
Der variable Teil besteht in diesem Beispiel aus ...\50027xx\5002723\.... . Die Ordner davor und hahinter sind immer die Gleichen.
Dass ich das so verstanden habe, hätte eigentlich mein erster Satz ausdrücken sollen ...

... und ist auch entsprechend im Batch umgesetzt.

Da ich davon ausgehe, dass Du diesen noch nicht wirklich getestet hast, noch ein Hinweis:
Um mit Testdaten arbeiten zu können, brauchst Du eigentlich nur in den Zeilen 5 und 6 andere Quell- bzw Zielordner anzugeben (etwa "D:\HVTest" und "T:\HausTest"), und 2 oder 3 Dateien in den Test-Quellordner zu legen.

Grüße
bastla
Bitte warten ..
Mitglied: Hausboot
21.08.2008 um 21:24 Uhr
Hallo Bastla,

ich hatte beim Testen keine pdf-Datei ausgewählt. Mein Fehler. Es funktioniert jetzt einwandfrei.
Ich habe jedoch nich eine Bitte.
Könntest Du die Batchdatei so abändern, dass keine Ordner erstellt werden, sondern die Dateien sofort in die entsprechenden Ordner verschoben werden? Die Log-Datei soll erstellt werden.
Nochmals vielen Dank für die schnellen Antworten.

Grüße
Hausboot
Bitte warten ..
Mitglied: bastla
21.08.2008 um 21:33 Uhr
Hallo Hausboot!

Könntest Du die Batchdatei so abändern, dass keine Ordner erstellt werden, sondern die Dateien sofort in die entsprechenden Ordner verschoben werden?
Dieses Mal kann ich Dir tatsächlich nicht folgen: Es werden ja nur jene Ordner erstellt, in welche dann tatsächlich Dateien verschoben werden sollen, und auch das nur, soferne es diese Ordner noch nicht gibt (siehe Zeile 18) ...

Grüße
bastla
Bitte warten ..
Mitglied: Hausboot
21.08.2008 um 22:24 Uhr
Hallo Bastla,

mein Problem ist, dass bei diesem Beispiel, der Ordner >>5002723 - Mietobjekt 10 - AK1000<< heißen kann.
Die Bezeichnugnen ändern sich im dritten Unterordner.
T:\Haus\50027xx\5002723 - Mietobjekt 10 - AK1000\01_Mietverträge\014_Verwaltung\0141_Verträge verschoben werden.<<
Da die Namen unterschiedlich sind, dachte ich, dass die zu verschiebende Datei direkt in den vorgesehenen Ordner verschoben werden kann.
Danke für deine Geduld

Grüße
Hausboot
Bitte warten ..
Mitglied: bastla
21.08.2008 um 22:32 Uhr
Hallo Hausboot!

Da die Namen unterschiedlich sind, dachte ich, dass die zu verschiebende Datei direkt in den vorgesehenen Ordner verschoben werden kann.
Wie soll denn festgestellt werden, welches der "vorgesehene" Ordner ist, wenn es keine einheitlichen Namenskonventionen gibt?

Grüße
bastla
Bitte warten ..
Mitglied: Hausboot
21.08.2008 um 22:50 Uhr
Hallo Bastla,

da ich keine Ahnung von Batchprogrammierung habe, hatte ich mir gedacht, dass durch Wildcards (falls sowas möglich ist) die Zusätze - Mietobjekt 10 - AK1000 zu ersetzen sind. Die Ziffernfolge 5002723 ergibt sich aus z.B. Köln_2008.07.01_5002723.pdf.
Kann man es eventuell so realisieren?

Grüße

Hausboot
Bitte warten ..
Mitglied: bastla
21.08.2008 um 22:55 Uhr
Hallo Hausboot!

da ich keine Ahnung von Batchprogrammierung habe
Musst Du auch nicht, es genügt eine exakte Beschreibung der nötigen Vorgangsweise ...

Diese könnte jetzt (für das konkrete Beispiel) so lauten:
Finde den ersten Unterordner von "50027xx", dessen Name mit "5002723" beginnt, und verschiebe die Datei in den Unterunterunterordner "01_Mietverträge\014_Verwaltung\0141_Verträge verschoben" des gefundenen Ordners (dieser Teil ist dann ja hoffentlich wirklich konstant).

Kommt das so hin?

Grüße
bastla
Bitte warten ..
Mitglied: Hausboot
21.08.2008 um 23:02 Uhr
Hallo Bastla,

deine Beschreibung ist korrekt.
Kann man dies auch auf auf die anderen Dateien z.B. 80038xx\\8003841 umsetzen?

Grüße

Hausboot
Bitte warten ..
Mitglied: bastla
21.08.2008 um 23:24 Uhr
Hallo Hausboot!

Kann man dies auch auf auf die anderen Dateien z.B. 80038xx\\8003841 umsetzen?
Wenn schon, denn schon ...
01.
@echo off & setlocal 
02.
for /f "tokens=2 delims=:." %%i in ('chcp') do set "cp=%%i" 
03.
chcp 1252>nul 
04.
 
05.
set "Quelle=D:\Hausverwaltung" 
06.
set "Ziel=T:\Haus" 
07.
set "ZielUnter=01_Mietverträge\014_Verwaltung\0141_Verträge verschoben" 
08.
set "Log=D:\Verträge_verschoben.log" 
09.
 
10.
if exist "%Log%" del "%Log%" 
11.
for %%i in ("%Quelle%\*.pdf") do call :ProcessFile "%%~fi" 
12.
chcp %cp%>nul 
13.
goto :eof 
14.
 
15.
:ProcessFile 
16.
for /f "tokens=3 delims=_" %%a in ("%~n1") do set "Obj=%%a" 
17.
set Ziel2= 
18.
for /d %%v in ("%Ziel%\%Obj:~,5%xx\%Obj%*.*") do set "Ziel2=%%~fv" 
19.
if not defined Ziel2 echo ## Ein Ordner für "%Obj%" konnte nicht gefunden werden!>>"%Log%" & goto :eof 
20.
set "ZielPfad=%Ziel2%\%ZielUnter%" 
21.
if not exist "%Zielpfad%\" echo ## Der Pfad "%Zielpfad%" existiert nicht!>>"%Log%" & goto :eof 
22.
if exist "%Zielpfad%\%~nx1" echo ## Datei %1 in "%Zielpfad%" bereits vorhanden!>>"%Log%" & goto :eof 
23.
move %1 "%Zielpfad%\" && echo %1 verschoben nach "%Zielpfad%">>"%Log%" 
24.
goto :eof
Eine kleine Änderung zur obigen Beschreibung: Wenn es mehrere Unterordner, deren Name mit der Objektnummer ("5002723") beginnt, geben sollte, wird nicht unbedingt der (alphabetisch) Erste verwendet. Ist überhaupt davon auszugehen, dass es mehrere solcher Ordner gibt?

Der weitere Pfad ("01_Mietverträge\014_Verwaltung\0141_Verträge verschoben" ) wird jetzt auch nicht erstellt, sondern vorausgesetzt (aber natürlich vorweg geprüft).

Grüße
bastla
Bitte warten ..
Mitglied: Hausboot
21.08.2008 um 23:37 Uhr
Hallo Bastla,

ich möchte mich recht herzlich bei Dir bedanken. Es funktioniert jetzt wunderbar.

Ich wünsche Dir eine gute Nacht.

Viele Grüße

Hausboot
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Eine Batch zum Sortieren verschiedener Dateien in Ordner

gelöst Frage von JaglagBatch & Shell16 Kommentare

Hallo, da ich leider mit Batch und shell nicht so erfahren bin hoffe das ein findiger User hier weiterhelfen ...

Batch & Shell

Batch Ordner erstellen und verschieben

gelöst Frage von FromeonlyBatch & Shell6 Kommentare

Hallo Leute, ich habe ein kleines Problem beim erstellen einer Batch. Ziel der Batch soll es sein, dass sie ...

Batch & Shell

Ordner per Batch verschieben, Datei kopieren

gelöst Frage von Shape.ShifterBatch & Shell2 Kommentare

Guten Abend :) Ich möchte mein Backup etwas anpassen und muss dafür viele Ordner verschieben und jeweils eine Datei ...

Batch & Shell

Batch: bestimmte Datei finden und den Ordner verschieben

gelöst Frage von Gari.onBatch & Shell9 Kommentare

Hallo! ich hoffe ich bin hier richtig, es geht um folgendes Problem: in einem Ordner liegen mehrere Unterordner mit ...

Neue Wissensbeiträge
Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 5 StundenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 10 StundenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 21 StundenMicrosoft Office2 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Humor (lol)

Warum man sein Gast-WLAN nicht beliebig nennen sollte

Erfahrungsbericht von Henere vor 1 TagHumor (lol)5 Kommentare

Servus, mal was aus dem Alltag. Zu Hause. Eigentlich wollte ich nur einen weiteren WLAN-AP ins Netz bringen, damit ...

Heiß diskutierte Inhalte
Windows Netzwerk
LAN nur 10MB pro s trotz gb lan
Frage von tsunamiWindows Netzwerk21 Kommentare

Hallo zusammen, ich brauche mal wieder einen Anstoß in die richtige Richtung. Ich habe einen Windows 10 pc mit ...

Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid15 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Windows 10
Windows 10 Startmenü-Einstellungen Systemweit festlegen
Frage von flotautWindows 1013 Kommentare

Guten Morgen liebe Admins, wir möchten bei uns am Lehrstuhl demnächst auf Windows 10 umsteigen. Wir installieren unsere PC's ...