Datei in gleichnamigen Ordner kopieren per Batch
Leider habe ich durch Suchen nichts passendes gefunden. Ich suche die Möglichkeit Dateien aus einem Verzeichnis in einen gleichnamigen Ordner zu kopieren.
Hallo zusammen. Ich habe ein kleines Problem und hoffe hier gibt es dazu Hilfe oder ein paar Tipps.
Ich habe in einem Ordner Dateien erzeugt per Scanner. Diese tragen den Namen 12345.tif, 12346.tif, 12347.tif .....99999.tif
Diese Dateien sollen jetzt in gleichnamige Ordner verschoben werden. Dabei muss dann aber falls möglich der Dateiname um einen Suffix erweitert werden.
Also die Datei 12345.tif soll in den bestehnden Ordner 12345 verschoben werden. Sollte dort jetzt eine Datei mit dem selben Namen enthalten sein, muss der Name um ein Suffix erweitert werden
Bsp:
Ordner 12345 enthält bereits die Datei 12345_1.tif und 12345_2.tif so soll jetzt die Datei umbenannt werden in 12345_3.tif und in diesen Ordner verschoben werden.
Sollte dies nun nicht klappen, werde ich meine Datei eben am Scanner so erzeugen lassen.
D.h. ich gebe beim Drucken des Barcodes 12345_1 aus und habe nun die Datei schon mit dem richtigen Namen.
Jetzt müsste das Programm oder die Batch prüfen was steht vor dem _1 also 12345 und kopiert diese Datei in den Ordner 12345
Ich hoffe ich habe das so erklärt, dass ihr was damit anfangen können.
Für schnelle Hilfe wäre ich sehr dankbar.
mfg
Thomas
Hallo zusammen. Ich habe ein kleines Problem und hoffe hier gibt es dazu Hilfe oder ein paar Tipps.
Ich habe in einem Ordner Dateien erzeugt per Scanner. Diese tragen den Namen 12345.tif, 12346.tif, 12347.tif .....99999.tif
Diese Dateien sollen jetzt in gleichnamige Ordner verschoben werden. Dabei muss dann aber falls möglich der Dateiname um einen Suffix erweitert werden.
Also die Datei 12345.tif soll in den bestehnden Ordner 12345 verschoben werden. Sollte dort jetzt eine Datei mit dem selben Namen enthalten sein, muss der Name um ein Suffix erweitert werden
Bsp:
Ordner 12345 enthält bereits die Datei 12345_1.tif und 12345_2.tif so soll jetzt die Datei umbenannt werden in 12345_3.tif und in diesen Ordner verschoben werden.
Sollte dies nun nicht klappen, werde ich meine Datei eben am Scanner so erzeugen lassen.
D.h. ich gebe beim Drucken des Barcodes 12345_1 aus und habe nun die Datei schon mit dem richtigen Namen.
Jetzt müsste das Programm oder die Batch prüfen was steht vor dem _1 also 12345 und kopiert diese Datei in den Ordner 12345
Ich hoffe ich habe das so erklärt, dass ihr was damit anfangen können.
Für schnelle Hilfe wäre ich sehr dankbar.
mfg
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 22.09.2009 um 09:39:28 Uhr
Verschoben von "Windows" nach "Batch & Shell".
Content-ID: 125478
Url: https://administrator.de/contentid/125478
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
13 Kommentare
Neuester Kommentar
Hi Thomas,
den Ornder der Tif auf den Batch ziehen oder im Batch %~1
durch den Pfad und name des Ordners ersetzen. in Zeile 2 und 3
Gruß Phil
den Ornder der Tif auf den Batch ziehen oder im Batch %~1
durch den Pfad und name des Ordners ersetzen. in Zeile 2 und 3
@echo off &setlocal
if not exist "%~1." goto :eof
pushD "%~1"
for %%i in (*.tif) do set "name=%~ni" & call :move
popD
goto :eof
:move
if exist "%name%" goto :test
mkdir "%name%"
move "%name%.tif" "%name%" & goto :eof
:test
set /a nr=1
for %%i in ("%name%\%name%_*.tif") do set /a nr+=1
move "%name%.tif" "%name%\%name%_%nr%.tif"
goto :eof
Gruß Phil
<OT>
Ach weißt DU, PH,
mir ist es lieber, solche Schusselfehler zu lesen (oder auch zu machen) in selbst runtergetippseltem Code als irgendein Skript zu korrigieren oder zu warten, das aus drei oder mehr lose zusammengetackerten Copy&Paste-Blöcken aus verschiedenen Quellen und von verschiedenen Autoren besteht.
Bei Deinen Schnipseln mögen Tippfehler enthalten sein, aber die Programmlogik, Nachvollziehbarkeit und -Lesbarkeit ist gegeben.
Und damit lässt sich auf Dauer mehr anfangen als mit einem Skript der Gütekategorie "funktionierend, aber ich auch nicht so genau, was da passiert".
Grüße
Biber
</OT>
Ach weißt DU, PH,
mir ist es lieber, solche Schusselfehler zu lesen (oder auch zu machen) in selbst runtergetippseltem Code als irgendein Skript zu korrigieren oder zu warten, das aus drei oder mehr lose zusammengetackerten Copy&Paste-Blöcken aus verschiedenen Quellen und von verschiedenen Autoren besteht.
Bei Deinen Schnipseln mögen Tippfehler enthalten sein, aber die Programmlogik, Nachvollziehbarkeit und -Lesbarkeit ist gegeben.
Und damit lässt sich auf Dauer mehr anfangen als mit einem Skript der Gütekategorie "funktionierend, aber ich auch nicht so genau, was da passiert".
Grüße
Biber
</OT>
moin Iceman,
Hier haste eine etwas wartbarere Version
Gruß Phil
Hier haste eine etwas wartbarere Version
@echo off &setlocal
if not exist "%~1." goto :eof
:: Einstellung für Datentypen
set "DateiTyp=.MVP"
pushD "%~1"
for %%i in (*%DateiTyp%) do set "name=%%~ni" & set "EXT=%%~xi" & call :move
popD
goto :eof
:move
if exist "%name%" goto :test
mkdir "%name%"
move "%name%%EXT%" "%name%" & goto :eof
:test
set /a nr=1
for %%i in ("%name%\%name%_*%EXT%") do set /a nr+=1
move "%name%%EXT%" "%name%\%name%_%nr%%EXT%"
goto :eof
Gruß Phil
[OT] @ph
gefällt mir irgendwie ...
Hinsichtlich der angefügten Nummer würde ich mich aber eher nicht auf das Abzählen der vorhandnen Files verlassen, sondern einfach so lange hochzählen, bis es keine Datei mit der aktuellen Nummer als Suffix gibt:
Grüße
bastla
[/OT]
set "DateiTyp=MVP"
Hinsichtlich der angefügten Nummer würde ich mich aber eher nicht auf das Abzählen der vorhandnen Files verlassen, sondern einfach so lange hochzählen, bis es keine Datei mit der aktuellen Nummer als Suffix gibt:
set /a nr=1
:Schleife
if exist "%name%\%name%_%nr%%EXT%" (set /a nr+=1 & goto :Schleife)
move "%name%%EXT%" "%name%\%name%_%nr%%EXT%"
goto :eof
bastla
[/OT]
moin bastla,
im Grunde genommen geht es ja "nur" um das Verschieben einer Datei mit dem Namen XYZ in den Ordner XYZ.
(im Stillschweigenden) gehe ich davon aus.
wenn die Datei "XYZ.ext" schon in den Ordner drin ist, sollte doch eine solche For-Schleife ausreichen da die ja Übersetzt ( "XYZ*.ext") alle Dateien, welche mit XYZ beginnen und der Extension ".ext" abzählen.
ja eigentlich müsste es ja:
heissen, da ja schon bei der Existenz vom 1. File an eins höher gezählt wird.
Gruß Phil
set "DateiTyp=MVP"
war ja auch gar net so Geplant. - Liegt aber irgendwie in meiner Natur, das es immer wieder auf solche Sachen herausläuft einmal selbst Brain anzuschalten (warum auch immer) - ich kann aber nix dafür...im Grunde genommen geht es ja "nur" um das Verschieben einer Datei mit dem Namen XYZ in den Ordner XYZ.
(im Stillschweigenden) gehe ich davon aus.
wenn die Datei "XYZ.ext" schon in den Ordner drin ist, sollte doch eine solche For-Schleife ausreichen da die ja Übersetzt ( "XYZ*.ext") alle Dateien, welche mit XYZ beginnen und der Extension ".ext" abzählen.
ja eigentlich müsste es ja:
set /a nr = 0
Zitat von tomnight2002
Also die Datei 12345.tif soll in den bestehnden Ordner 12345 verschoben werden. Sollte dort jetzt eine Datei mit dem selben Namen enthalten sein, muss der Name um ein Suffix erweitert werden
Aber ich gehe davon aus,: -> das File ohne Nummer ist das File welches die Nummer 1 bekommen hätte. -> Null heisst ja auch es ist nichts da.Also die Datei 12345.tif soll in den bestehnden Ordner 12345 verschoben werden. Sollte dort jetzt eine Datei mit dem selben Namen enthalten sein, muss der Name um ein Suffix erweitert werden
Gruß Phil