Datei Verwaltung
Guten Tag allerseits
Ich habe mir vorgestellt per Batch Dateien Verwalten und zwar folgende,
es handelt sich um Folgende Dateien die sich immer in unterschiedlichen Ordnern und mit unterschiedlichen Namen befinden
z.B
5000_500_101_00.pdf
5000_500_102_00.pdf
5000_500_103_01.pdf
5000_500_104_00.pdf
5000_500_101_00.jpg
5000_500_102_00.jpg
5000_500_103_01.jpg
5000_500_104_00.jpg
ich habe mir folgendes vorgestellt
1. Dateinamen auslesen, Kürzen und Ordner erstellen, z.B. in Ordnernamen 5000_500 und alle Pdf´s rein kopieren mit Originalnamen.
2. Ordner z.B. 5000_500 Verschieben nach D:\PDF\ (dieser Pfad ist immer gleich) wenn Ordner schon vorhanden nur die Dateien rein kopieren.(ich glaube es geht automatisch wen Ordner schon vorhanden)
3. Wenn im Ordner z.B. D:\PDF\5000_500 es schon eine Datei mit dem Namen 5000_500_103_00 also älter als die 5000_500_103_01 gibt, dann einen Ordner alt erstellen und und die Datei 5000_500_103_00 in den Ordner alt verschieben.
Danach das gleiche mit .jpg machen, nur das hier das Zielverzeichnis D:\jpg\ heist
Ich bedanke mich im Voraus
P.S. Frohe Ostern wünsche ich euch allen.
Ich habe mir vorgestellt per Batch Dateien Verwalten und zwar folgende,
es handelt sich um Folgende Dateien die sich immer in unterschiedlichen Ordnern und mit unterschiedlichen Namen befinden
z.B
5000_500_101_00.pdf
5000_500_102_00.pdf
5000_500_103_01.pdf
5000_500_104_00.pdf
5000_500_101_00.jpg
5000_500_102_00.jpg
5000_500_103_01.jpg
5000_500_104_00.jpg
ich habe mir folgendes vorgestellt
1. Dateinamen auslesen, Kürzen und Ordner erstellen, z.B. in Ordnernamen 5000_500 und alle Pdf´s rein kopieren mit Originalnamen.
2. Ordner z.B. 5000_500 Verschieben nach D:\PDF\ (dieser Pfad ist immer gleich) wenn Ordner schon vorhanden nur die Dateien rein kopieren.(ich glaube es geht automatisch wen Ordner schon vorhanden)
3. Wenn im Ordner z.B. D:\PDF\5000_500 es schon eine Datei mit dem Namen 5000_500_103_00 also älter als die 5000_500_103_01 gibt, dann einen Ordner alt erstellen und und die Datei 5000_500_103_00 in den Ordner alt verschieben.
Danach das gleiche mit .jpg machen, nur das hier das Zielverzeichnis D:\jpg\ heist
Ich bedanke mich im Voraus
P.S. Frohe Ostern wünsche ich euch allen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139800
Url: https://administrator.de/forum/datei-verwaltung-139800.html
Ausgedruckt am: 25.12.2024 um 06:12 Uhr
14 Kommentare
Neuester Kommentar
Ich bin halt was batches angeht nicht so der Technische, aber ich würde jetzt einfach erstmal mit dem FilesystemObject die Dateien auflisten. Die Info kann man in ein Array oder Recordset wegschreiben. Das geht man dann durch benennt um und verschiebt die Dateien und legt sich die ORdner an, wie man sie braucht.
Hallo Spidi-25!
Nun gut, hangeln wir uns von Thread zu Thread - oder möchtest Du ev einmal den gewünschten Gesamtablauf - zB mit Gegenüberstellung Ist- / Sollzustand - beschreiben?
Vorausgesetzt habe ich, dass es keine Namenskollisionen gibt (also zB Dateien mit dem Namen "5000_500_103_01.pdf" nicht sowohl im "Quell-" als auch im "Ziel-" oder "Ziel\alt"-Ordner existieren).
Zusätzlich ist bei der Angabe des Zieles der Pfad immer mit abschließendem "\" zu schreiben (also wenn nicht nach "D:\PDF\...", sondern nach "D:\Archiv\PDF\..." kopiert werden soll, müsste in Zeile 3 als Zielpfad "D:\Archiv\" angegeben sein), während der Quellpfad keinen "\" am Ende haben darf.
Grüße
bastla
Nun gut, hangeln wir uns von Thread zu Thread - oder möchtest Du ev einmal den gewünschten Gesamtablauf - zB mit Gegenüberstellung Ist- / Sollzustand - beschreiben?
@echo off & setlocal
set "Quelle=D:\Viele Dateien"
set "Ziel=D:\"
pushd "%Quelle%"
for %%t in (PDF JPG) do (
for /f %%i in ('dir /b /on /a-d *_*_*_*.%%t') do (
for /f "tokens=1-4 delims=_" %%a in ("%%~ni") do (
md "%Ziel%%%a_%%b\alt" 2>nul
copy "%%i" "%Ziel%%%a_%%b\">nul
for /f "skip=1 delims=" %%x in ('dir /b /o-n /a-d "%Ziel%%%a_%%b\%%a_%%b_%%c_*%%~xi"') do move "%Ziel%%%a_%%b\%%x" "%Ziel%%%a_%%b\alt\"
)
)
)
popd
Zusätzlich ist bei der Angabe des Zieles der Pfad immer mit abschließendem "\" zu schreiben (also wenn nicht nach "D:\PDF\...", sondern nach "D:\Archiv\PDF\..." kopiert werden soll, müsste in Zeile 3 als Zielpfad "D:\Archiv\" angegeben sein), während der Quellpfad keinen "\" am Ende haben darf.
Grüße
bastla
Hallo Spidi-25!
Grüße
bastla
in der Zeile 2 steht Quelle=D:\ verstehe ich das richtig das der Code von dem Laufwerk D:\ ausgeht?
Ja.Die Dateien befinden sich aber manchmal im Laufwerk V:\ manchmal im Laufwerk K:\ wie es bei einer Firma vorkommt verschiedene Laufwerke.
Wenn Du weißt, wie sich das Laufwerk feststellen lässt, sollte es kein Problem sein, das im Batch zu berücksichtigen ...gibt es keine Möglichkeit wenn die Datei 5000_500_103_01.pdf im "Quell-" als auch im "Ziel-" oder "Ziel\alt"-Ordner existieren eine abfrage überschreiben einzubauen?
Eine derartige Abfrage widerspricht eigentlich dem Sinn eines Batches, nämlich einen automatisierten Ablauf zu ermöglichen - zu realisieren wäre es zwar mit dem Schalter "/-y" für den "copy
"- und den "move
"-Befehl, besser wäre aber eine Strategie, die eine automatische Behandlung erlaubt - und wenn nur in Form eines Logs, das die nicht kopierten / verschobenen Dateien festhält.Grüße
bastla
Hallo Spidi-25!
Grüße
bastla
gibt es eine Möglichkeit wenn sich keine Datei im "Ziel-" oder "Ziel\alt"-Ordner befindet automatische Durchführung
Das passiert ohnehin ...Wenn aber schon vorhanden dann nachfragen
Wie schon erwähnt, kann jeweils durch ein "copy /-y ...
" bzw "move /-y ...
" gefragt werden, ob eine gleichnamige Zieldatei überschrieben werden soll - allerdings erscheint mir das nicht wirklich sinnvoll, denn: Was soll denn bei einer Antwort "nein" weiter passieren?Grüße
bastla
Hallo Spidi-25!
Nach bisherigem Stand bleiben alle Dateien im Quellordner - es soll ja kopiert werden ...
Grüße
bastla
Nach bisherigem Stand bleiben alle Dateien im Quellordner - es soll ja kopiert werden ...
wie Sieht es mit der 2 Zeile aus? Was muss da geändert werden?
Leider verstehe ich Deine Frage nicht - in dieser Zeile kannst Du den "Quell"-Pfad (aus dem die Dateien - nach derzeitigem Stand - kopiert werden sollen) eintragen (und nur eben nicht am Ende einen "\" schreiben) ...Grüße
bastla
...und noch mal, Spidi-25,
ergänzend zu bastla, die Behauptung : So wird das nix.
Es gab mal weiter oben folgende Plauderei zwischen euch:
Das ist einer der rund 25 Momente in deinen momentan offenen Beiträgen, in denen ich als unbefangener Mitleser ins Essen brechen möchte, aber als hilfsbereiter Moderator versuche zu übersetzen.
Hey, Spidi-25, der liebe bastla wollte dir sagen: Bevor irgendetwas automatisiert werden kann, sollte es organisatorisch geregelt und definiert sein.
"Batch" bedeutet: Es wird ein ohnehin vorhandener Arbeitsprozess an den Stellen etwas schneller gemacht, wo sich Abläufe wiederholen und reproduzierbar eintreten.
Oder aber es wird durch einen Batch-Prozess ein neuer "zwingender" Ablauf etabliert.
Und solange es in deiner Welt so ist, dass es mal Laufwerk K: und mal aber V: sein kann (und keiner weiß es, wenn der Batch gestartet wird) oder wenn es "aber Kollegen gibt, die es ein bisschen anders machen", solange brauchst du weder Skript-Handwerker noch Script-Künstler um irgendwelche Teil-Feinheiten in den Ornamenten um Rat ersuchen.
Vergiss einen Moment, dass es Batches und VB-Script und Turbo-X++ gibt. Kommt im nächsten Schritt.
Definiere erst mal einen eindeutigen, verbindlichen, reproduzierbaren Prozess mit EINEM Startpunkt, in dem alle realistisch zu erwarteten Fälle berücksichtigt und zu einem gesteuerten Abschluss geführt werden.
Grüße
Biber
ergänzend zu bastla, die Behauptung : So wird das nix.
Es gab mal weiter oben folgende Plauderei zwischen euch:
[Spidi-25:] Die Dateien befinden sich aber manchmal im Laufwerk V:\ manchmal im Laufwerk K:\ wie es bei einer Firma vorkommt verschiedene Laufwerke.
[bastla] Wenn Du weißt, wie sich das Laufwerk feststellen lässt, sollte es kein Problem sein, das im Batch zu berücksichtigen ..
[Spidi-25] nein weiß ich leider nicht bin ein Anfänger in diesem Bereich.
[bastla] Wenn Du weißt, wie sich das Laufwerk feststellen lässt, sollte es kein Problem sein, das im Batch zu berücksichtigen ..
[Spidi-25] nein weiß ich leider nicht bin ein Anfänger in diesem Bereich.
Das ist einer der rund 25 Momente in deinen momentan offenen Beiträgen, in denen ich als unbefangener Mitleser ins Essen brechen möchte, aber als hilfsbereiter Moderator versuche zu übersetzen.
Hey, Spidi-25, der liebe bastla wollte dir sagen: Bevor irgendetwas automatisiert werden kann, sollte es organisatorisch geregelt und definiert sein.
"Batch" bedeutet: Es wird ein ohnehin vorhandener Arbeitsprozess an den Stellen etwas schneller gemacht, wo sich Abläufe wiederholen und reproduzierbar eintreten.
Oder aber es wird durch einen Batch-Prozess ein neuer "zwingender" Ablauf etabliert.
Und solange es in deiner Welt so ist, dass es mal Laufwerk K: und mal aber V: sein kann (und keiner weiß es, wenn der Batch gestartet wird) oder wenn es "aber Kollegen gibt, die es ein bisschen anders machen", solange brauchst du weder Skript-Handwerker noch Script-Künstler um irgendwelche Teil-Feinheiten in den Ornamenten um Rat ersuchen.
Vergiss einen Moment, dass es Batches und VB-Script und Turbo-X++ gibt. Kommt im nächsten Schritt.
Definiere erst mal einen eindeutigen, verbindlichen, reproduzierbaren Prozess mit EINEM Startpunkt, in dem alle realistisch zu erwarteten Fälle berücksichtigt und zu einem gesteuerten Abschluss geführt werden.
Grüße
Biber
Hallo Spidi-25!
Wenn Du von Anfang an klar gestellt hättest, dass Du den Batch immer aus dem "Quell"-Ordner heraus startest (über Deinen "Filecommander") hätten wir uns die Zeile 2 (und auch die Zeile 5) sparen können - daher einfach weg damit (besonders, da die Zeile 2 in der jetzigen Form ohnehin keinen Sinn hat).
Grüße
bastla
Wenn Du von Anfang an klar gestellt hättest, dass Du den Batch immer aus dem "Quell"-Ordner heraus startest (über Deinen "Filecommander") hätten wir uns die Zeile 2 (und auch die Zeile 5) sparen können - daher einfach weg damit (besonders, da die Zeile 2 in der jetzigen Form ohnehin keinen Sinn hat).
Grüße
bastla