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 ID aus Dateiname auslesen und Ordner erstellen

Frage Entwicklung Batch & Shell

Mitglied: Naik0n

Naik0n (Level 1) - Jetzt verbinden

06.02.2008, aktualisiert 28.02.2008, 7255 Aufrufe, 5 Kommentare

Hallo zusammen,

Ich habe gerade ein wenig in der Datenbank geforstet und konnte nicht wirklich etwas finden wonach ich eigendlich suche.

Folgendes Problem habe ich.

Es befinden sich lauter Files in einem Ordner:
D005546_1.pdf
D005546_2.pdf
D877888_1.pdf
D145658_1.pdf

P005546_1.jpg
P871786_1.jpg
P871786_2.jpg
P010505_1.jpg
P877888_1.jpg
P877888_2.jpg

alles nach dem "P" oder "D" bis zum "_" ist eine ID, Beispiel: 005546 oder 871786.

Es soll die ID ausgelesen werden und ein Ordner dazu auf C:\IDs\ erstellt werden, Beispiel: C:\IDs\005546
in den ordner sollen dann Alle files die diese ID enthalten. Also: D005546_1.pdf, D005546_2.pdf, P005546_1.jpg alle in den Ordner "005546"

Ich hoffe mir kann da jemand bei meinem Problemchen helfen, denn ich kenne mich mit Batch nicht all zu gut aus.

Vielen Dank im Voraus!

Sollte dies machbar sein hätte ich da noch ein etwas komplexeres Problem :D
Mitglied: bastla
06.02.2008 um 15:33 Uhr
Hallo Naik0n und willkommen im Forum!

Versuch es so (aber besser erst einmal mit Testdaten ):
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ordner" 
03.
set "Ziel=C:\IDs" 
04.
 
05.
for /f "delims=" %%i in ('dir /b /a-d "%Quelle%" 2^>nul') do call :ProcessFile "%%i" 
06.
goto :eof 
07.
 
08.
:ProcessFile 
09.
for /f "delims=_" %%a in (%1) do set "ID=%%a" 
10.
if not defined ID goto :eof 
11.
set ID=%ID:~1% 
12.
set "ZielOrdner=%Ziel%\%ID%" 
13.
if not exist "%ZielOrdner%" md "%ZielOrdner%" || (echo %ZielOrdner% konnte nicht erstellt werden) & goto :eof 
14.
move /-Y "%Quelle%\%~1" "%ZielOrdner%\"
Soferne es sich hier um eine einmalige Aktion handelt, sollte sich das Problem von Namenskollisionen (eine Datei gleichen Namens ist im Zielordner schon vorhanden) nicht stellen - trotzdem habe ich bei "move" zur Sicherheit den Schalter "/-Y" hinzugefügt, damit Du im Fall des Falles vor dem Überschreiben noch gefragt wirst.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
06.02.2008 um 16:52 Uhr
Moin bastla,

Vorschlag zur Vereinfachung:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ordner" 
03.
set "Ziel=C:\IDs" 
04.
 
05.
for %%i in ("%Quelle%\D*_*.pdf" "%quelle%\P*_*.jpg") do call :ProcessFile "%%~nxi" 
06.
goto :eof 
07.
 
08.
:ProcessFile 
09.
for /f "delims=PD_" %%a in (%1) do set "ID=%%a" 
10.
set "ZielOrdner=%Ziel%\%ID%" 
11.
if not exist "%ZielOrdner%" md "%ZielOrdner%" || (echo %ZielOrdner% konnte nicht erstellt werden) & goto :eof 
12.
move /-Y "%Quelle%\%~1" "%ZielOrdner%\"
Grüße
Biber
Bitte warten ..
Mitglied: bastla
06.02.2008 um 17:05 Uhr
@Biber

Vereinfachung ja, allerdings auch Einschränkung hinsichtlich Anfangsbuchstaben und Dateitypen (dass auch ein Ordner mit dem verwendeten Suchmuster "D*_*.pdf" gefunden würde, ist aber eher unwahrscheinlich und daher kein ernstzunehmender Einwand ).

Grüße
bastla
Bitte warten ..
Mitglied: Naik0n
28.02.2008 um 12:28 Uhr
Hallo Zusammen,

Danke erstmal für die Vorschläge.
Ein Problem besteht weiterhin, er kopiert jeweils nur 1 File der ID in die ID ordner, der rest bleibt liegen, ausser ich führe den prozess nochmal aus, dann geht es.

Zudem kommt ein weiteres Problem hinzu, ich möchte während die Files verschoben werden die JPG Bilder in PDF umwandeln. ( Commandobefehl: convert "C:\file.jpg" "C:\file.pdf")

Alle Bilder mit der ID sollen am ende in einer PDF landen "ID.pdf"


danke
Bitte warten ..
Mitglied: Biber
28.02.2008 um 20:37 Uhr
...ich weiß gar nicht, wieso einige hier im Forum immer wieder seitenlange Lösungsskripte für wildfremde Hilfesuchende runtertippseln und viele dieser Hilfesuchenden, sollten sie sich nach Wochen überhaupt zurückmelden, dann melden "Habe es angepasst, läuft aber nicht" und wir diesen Fehler durch kontinuierliches Glaskugelreiben entfernen sollen....

.... gaaaanz laaaangsam bis 100 zähle.....

Okay, Freund Naik0n,
wenn der Schnipsel nicht aus dem geCALLten Block zurückkommt, dann fallen mir nur zwei mögliche Gründe dafür ein.
Der wahrscheinlichere davon ist, dass der Batch eben nicht mit der letzten Zeile dieses Blocks aufhört, sondern darunter noch weitere Zeilen folgen. Und die Rücksprunganweisung "goto :eof" fehlt.

Magst Du eventuell bitte Deinen hoch sensiblen Code posten, falls der nicht gerade im Original beim Nobelpreiskommitee in Stockholm unter Verschluss gehalten wird?

Danke
Biber

[Edit]
Okay, eben ist mir noch ein dritter Grund eingefallen, warum es nicht funktioneren könnte...
Ändere bitte die "IF NOT Exist"-Zeile so ab.
01.
if not exist "%ZielOrdner%" md "%ZielOrdner%" || ((echo %ZielOrdner% konnte nicht erstellt werden) & goto :eof)
[/Edit]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch: Dateiname abhängig vom Änderungsdatum auslesen
gelöst Frage von freaktastischBatch & Shell6 Kommentare

Servus zusammen, hab folgende Situation Oberordner: beinhaltet test.bat, Ordner1 und Ordner2 Ordner1, sowie Ordner2 beinhalten .docx Dateien. Mein Anliegen ...

Batch & Shell
Ordner anhand von Dateinamen erstellen und Dateien in Ordner kopieren
gelöst Frage von getmovingBatch & Shell3 Kommentare

Hallo, ich brauche eine einfache Batch-Datei für Windows, die alle Dateien in einem Ordner bearbeitet. Es sollen alle jpg-Dateien, ...

Batch & Shell
Batch: Auslesen von Dateinamen aus Text und Kopieren dieser.
gelöst Frage von gumpo03Batch & Shell2 Kommentare

Hallo. Ich sitze seit ungefähr einer Stunde an einem Problem, dass ich gern endlich lösen würde: Ich habe eine ...

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 ...

Neue Wissensbeiträge
Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 16 StundenMicrosoft Office6 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 18 StundenDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 19 StundenSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Microsoft Office

Outlook 2016 - Beim Weiterleiten keine PDF Anhänge mehr - KB4011626 entfernen

Erfahrungsbericht von Deepsys vor 22 StundenMicrosoft Office3 Kommentare

Wenn ihr feststellt das ihr beim Weiterleiten von E-Mails keine PDF Anhänge mehr versendent, dann dankt Microsoft. Diese tolle ...

Heiß diskutierte Inhalte
Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...

Server-Hardware
Veeam Backup Server stürzt alle paar Tage ab
Frage von Leo-leServer-Hardware12 Kommentare

Hallo Forum, ich habe momentan folgendes Problem. Veeam Backup and Replication 9.5 u2 auf voll gepatchten DL 380 G7 ...

Windows 10
Windows10-Schnellzugriff per Kommandozeile bearbeiten
Frage von SarekHLWindows 1010 Kommentare

Hallo zusammen, weiß jemand, wie ich per Kommandozeile (in einem Logon-Script) den persönlichen Dokumentenordner aus dem Schnellzugriff entferne den ...

Batch & Shell
Dateien verschieben mit batch
gelöst Frage von michi-ffmBatch & Shell10 Kommentare

Hallo Zusammen hat jemand evtl eine Idee? Zunächst hier das Skript: Leider werden keine UNC-Pfade unterstüzt, kann mir jemand ...