deejaybee
Goto Top

Batch - Dateien umkopieren

Hallo zusammen,

ein passenderer Titel fällt mir grad nicht ein, ich beschreib einfach mal das Problem:


Es gibt einen Ordner "Scans", dieser enthält Unterordner mit LKWs, die nach dem Kennzeichen benannt sind. In jedem Ordner eines LKWs befindet sich ein weiterer Ordner mit dem Kennzeichen des Anhängers. Und in genau diesem Ordner befinden sich gescannte Dokumente. Diese Struktur legt ein Tool des Scanners automatisch an.

Beispiel:


Scans \ B-KA 5678 \ B-KA 5345 \ scan1_48346456.pdf
Scans \ F-BI 1007 \ F-BI 6014 \ scan1_258465436.pdf


So ungefähr.
Die gescannten Dokumente sind mit einem Zeitstempel versehen, daher diese komische Nummer.

Gewünscht ist, dass die Dateien in beiden Ordnern abgelegt werden und die Unterordner verschwinden. Ja, es sollen bewußt doppelte Dateien entstehen.
Der Inhalt des Ordners "Scans" soll also umsortiert werden in den Ordner "Fahrzeuge" und dort soll zu jedem "Fahrzeug / Anhänger" ein neuer Unterordner "scans" mit dem Inhalt entstehen.


Fahrzeuge \ B-KA 5678 \ scans \ scan1_48346456.pdf
Fahrzeuge \ B-KA 5345 \ scans \ scan1_48346456.pdf
Fahrzeuge \ F-BI 1007 \ scans \ scan1_258465436.pdf
Fahrzeuge \ F-BI 6014 \ scans \ scan1_258465436.pdf


Der Ordner "Scans" (also dort, wo reingescannt wird), wird immer weiter gefüllt, ein Scantool legt beim einscannen die Ordner für die LKWs und die Anhänger automatisch an. Und ich benötige eine Lösung dafür, um diesen Ordner in das endgültige Zielverzeichnis umzusortieren. Das heißt auch, dass irgendwann zu einem Fahrzeug, welches bereits existiert neue Daten gescannt werden.


So, ich hoffe, ich hab mich nicht allzu kompliziert ausgedrückt und ihr könnt mir helfen.

MfG
Daniel

Content-ID: 230926

Url: https://administrator.de/contentid/230926

Ausgedruckt am: 26.11.2024 um 07:11 Uhr

Ausserwoeger
Ausserwoeger 25.02.2014 um 12:13:08 Uhr
Goto Top
Hi

Ich würde das Scantool so einstellen das die Ordner Richtig angelegt werden. Möglicherweise verstehe ich auch nicht was du damit genau bezwecken willst ?

Ordner Syncronisieren kannst du mit Robocopy wenn es sich um ein Windows Betriebssystem handelt ?

LG Andy
DeeJayBee
DeeJayBee 25.02.2014 aktualisiert um 12:16:45 Uhr
Goto Top
Hi Andy,

das Scantool kann ich leider nicht anders einstellen.
Eine einfache Möglichkeit wäre ja, die Dokumente mehrfach zu scannen - das ist aber doppelte Arbeit.

Gewünscht ist halt, dass ein Dokument einmal gescannt wird und in zwei Ordnern landen soll. Das Problem an dem Scantool ist leider, dass ich 2 Informationen (LKW + Anhänger) mitgeben muss, und das Tool dafür jeweils einen neuen Ordner anlegt.

LG Daniel

P.S.: Ja, es ist ein Windowssystem
pieh-ejdsch
pieh-ejdsch 25.02.2014 um 12:25:26 Uhr
Goto Top
moin,

das kannst Du doch mit einer Ordnerumleitung besser gestalten.

Gruß Phil
DeeJayBee
DeeJayBee 25.02.2014 um 15:32:24 Uhr
Goto Top
Hi Phil,

wie genau meinst Du das und wie würdest Du das umsetzen?

LG Daniel
bastla
Lösung bastla 25.02.2014, aktualisiert am 26.02.2014 um 13:22:30 Uhr
Goto Top
Hallo DeeJayBee!

Ungetestet etwa so:
@echo off & setlocal
set "Quelle=D:\Scans"  
set "Ziel=D:\Fahrzeuge"  

for /d %%L in ("%Quelle%\*") do (  
    for /d %%A in ("%%~L\*") do(  
        for %%S in ("%%~A\*.pdf") do (  
            xcopy "%%S" "%Ziel%\%%~nxL\" && xcopy "%%S" "%Ziel%\%%~nxA\" && echo del "%%S"  
        )
    )
)
Das Löschen der Scandateien wird (wegen des "echo" vor dem "del") nur durch Ausgabe des Befehls simuliert.

Grüße
bastla
Endoro
Lösung Endoro 25.02.2014, aktualisiert am 26.02.2014 um 13:22:33 Uhr
Goto Top
Mein Vorschlag:
@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "SourceFolder=%UserProfile%\test"  
SET "TargetFolder=%Temp%"  
FOR /r "%SourceFolder%" %%a IN (*.pdf) DO FOR %%b IN ("%%~dpa.") DO FOR %%c IN ("%%~dpb.") DO (  
	ECHO(MD "%TargetFolder%\%%~nxb"  
	ECHO(MD "%TargetFolder%\%%~nxc"  
	ECHO(COPY "%%~a" "%TargetFolder%\%%~nxb"  
	ECHO(MOVE "%%~a" "%TargetFolder%\%%~nxc"  
	ECHO(RD /s /q "%%~fc"  
)
Gruss.
Ausserwoeger
Ausserwoeger 26.02.2014 um 08:59:41 Uhr
Goto Top
Zitat von @DeeJayBee:

Hi Andy,

das Scantool kann ich leider nicht anders einstellen.
Eine einfache Möglichkeit wäre ja, die Dokumente mehrfach zu scannen - das ist aber doppelte Arbeit.

Gewünscht ist halt, dass ein Dokument einmal gescannt wird und in zwei Ordnern landen soll. Das Problem an dem Scantool ist
leider, dass ich 2 Informationen (LKW + Anhänger) mitgeben muss, und das Tool dafür jeweils einen neuen Ordner anlegt.

LG Daniel

P.S.: Ja, es ist ein Windowssystem

Hi

Wenn die Ordnerbennung so wie sie jetzt ist OK ist und man die Struktur nur spiegeln will ist Robocopy das richtige.

Schau dir das tool mal an. Du kannst einfach eine Batch datei und eine Aufgabe erstellen und diese dann dauerhaft laufen lassen. So wären deine Ordner immer genau gleich.

LG Andy
DeeJayBee
DeeJayBee 26.02.2014 aktualisiert um 13:23:45 Uhr
Goto Top
Danke Andy,

Robocopy ist ein tolles Tool. Dass es das kann, was ich hier benötige weiß ich gerade nicht. Müsste ich mal testen.

Die Struktur ist eben nicht so, wie ich sie brauche. Ich muss von "Ordner1\Ordner2\Datei.pdf" nach "Ordner1\Datei.pdf" und "Ordner2\Datei.pdf".

Der Code von bastla macht exakt das, was ich brauche. (Kleine Modifikation noch und läuft) Vielen Dank dafür.
Endoros Lösung sieht auch stark aus, hab ich aber noch nicht getestet. Hier wird die Datei im Anschluss direkt verschoben und muss nicht noch erneut gelöscht werden.

Besten Dank an alle Eure Vorschläge und Tipps.
Mit den Schleifen und Suchen hab ichs nicht so ganz face-smile

LG Daniel
bastla
bastla 26.02.2014 um 14:19:03 Uhr
Goto Top
Hallo DeeJayBee!
Hier wird die Datei im Anschluss direkt verschoben und muss nicht noch erneut gelöscht werden.
Im Gegenzug müssen dafür aber beide Ordner vorweg erstellt werden; außerdem findet das Löschen bei meinem Ansatz (wegen "&&") nur statt, wenn beide Kopiervorgänge ohne Fehler beendet wurden ...

Das Löschen des Ordners ließe sich natürlich auch noch ergänzen, allerdings war mir aufgrund Deiner Beschreibung nicht ganz klar, ob es tatsächlich immer nur um eine Datei bzw einen Anhänger geht - falls beides ja, einfach
xcopy "%%S" "%Ziel%\%%~nxL\" && xcopy "%%S" "%Ziel%\%%~nxA\" && echo rd /s /q "%%L"
Grüße
bastla