Batch Prüfen ob Datei bereits in Ordner
Hallo Allerseits,
ich habe vor einiger Zeit mit euerer Hilfe folgendes Batchprogramm erstellt.
(Dateien mit der Bezeichnung 10000.tif bis 20000.tif werden von C:\Start in den Ordner C:\Ziel\Nummer\ verschoben)
::----snipp MoveIntoRechNo.bat
@echo on & setlocal enableDelayedExpansion & set "target=C:\Ziel" & set "src=C:\Start"
For /l %%i in (1000010000,1,1000020000) do set "fn=%%i" && if exist "%src%\!Fn:~-9!.*" (
if not exist "%target%\!Fn:~1,9!" md %target%\!Fn:~1,9!
move /-y %src%\!Fn:~-9!.* %target%\!Fn:~1,9!\ >nul && echo Gemoved: %target%\!Fn:~1,9!\!Fn:~-9!.*
)
Leider habe ich damals nicht daran gedacht überprüfen zu lassen ob die Datei bereits im Zielordner vorhanden ist.
Deshalb bleibt das Programm beim vorhandensein der Datei einfach stehen.
Ich würde jetzt gerne entweder diese Nummer überspringen oder besser noch diese Datei umbenennen
(z.B. die Datei 10000.tif gibt es bereits im Ordner C:\Ziel\10000\ dann soll entweder die neue oder bestehende Datei auf 10000_1.tif umbenannt werden bzw. wenn 10000_1.tif auch vorhanden dann 10000_2.tif)
Da ich in der Batcherstellung ein ziemliches Greenhorn bin hoffe ich das Ihr mir auch dieses mal weiterhelft.
Mit bestem Dank
Herby_z
ich habe vor einiger Zeit mit euerer Hilfe folgendes Batchprogramm erstellt.
(Dateien mit der Bezeichnung 10000.tif bis 20000.tif werden von C:\Start in den Ordner C:\Ziel\Nummer\ verschoben)
::----snipp MoveIntoRechNo.bat
@echo on & setlocal enableDelayedExpansion & set "target=C:\Ziel" & set "src=C:\Start"
For /l %%i in (1000010000,1,1000020000) do set "fn=%%i" && if exist "%src%\!Fn:~-9!.*" (
if not exist "%target%\!Fn:~1,9!" md %target%\!Fn:~1,9!
move /-y %src%\!Fn:~-9!.* %target%\!Fn:~1,9!\ >nul && echo Gemoved: %target%\!Fn:~1,9!\!Fn:~-9!.*
)
Leider habe ich damals nicht daran gedacht überprüfen zu lassen ob die Datei bereits im Zielordner vorhanden ist.
Deshalb bleibt das Programm beim vorhandensein der Datei einfach stehen.
Ich würde jetzt gerne entweder diese Nummer überspringen oder besser noch diese Datei umbenennen
(z.B. die Datei 10000.tif gibt es bereits im Ordner C:\Ziel\10000\ dann soll entweder die neue oder bestehende Datei auf 10000_1.tif umbenannt werden bzw. wenn 10000_1.tif auch vorhanden dann 10000_2.tif)
Da ich in der Batcherstellung ein ziemliches Greenhorn bin hoffe ich das Ihr mir auch dieses mal weiterhelft.
Mit bestem Dank
Herby_z
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 83603
Url: https://administrator.de/forum/batch-pruefen-ob-datei-bereits-in-ordner-83603.html
Ausgedruckt am: 23.12.2024 um 17:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo Herby_z!
Ich habe mal Biber's doch recht kompakten Code ein wenig aufgedröselt und (hoffentlich) Deinem Wunsch entsprechend ergänzt:
Grüße
bastla
Ich habe mal Biber's doch recht kompakten Code ein wenig aufgedröselt und (hoffentlich) Deinem Wunsch entsprechend ergänzt:
@echo off & setlocal
set "target=C:\Ziel"
set "src=C:\Start"
for /l %%i in (1000010000,1,1000020000) do set "Fn=%%i" & call :ProcessFolder
goto :eof
:ProcessFolder
if not exist "%src%\%Fn:~-9%.*" goto :eof
set "TargetFolder=%target%\%Fn:~1,9%"
if not exist "%TargetFolder%" md "%TargetFolder%"
for %%j in ("%src%\%Fn:~-9%.*") do call :ProcessFile "%%~fj"
goto :eof
:ProcessFile
set Suffix=
set /a Counter=0
:Loop
if not exist "%TargetFolder%\%~n1%Suffix%%~x1" goto :MoveIt
set /a Counter+=1
set "Suffix=_%Counter%"
goto :Loop
:MoveIt
move /-y %1 "%TargetFolder%\%~n1%Suffix%%~x1">nul && echo Moved: "%TargetFolder%\%~n1%Suffix%%~x1"
goto :eof
Grüße
bastla
@bastla
Nenn es ruhig beim Namen... der damals von mir gepostete Schnipsel ist nicht lesbar oder wartbar, enthält keine Kommentarzeilen und nach 3 Monaten geht Neuschreiben eines anderen Batches schneller als das Nachvollziehen des Krypto-Codes.
Passiert manchmal im Verlauf einer angeregten Diskussion...
Danke jedenfalls für die Anpassung und Entschlüsselung.
Grüße
Biber
Ich habe mal Biber's doch recht kompakten Code...
*rotwerd*Nenn es ruhig beim Namen... der damals von mir gepostete Schnipsel ist nicht lesbar oder wartbar, enthält keine Kommentarzeilen und nach 3 Monaten geht Neuschreiben eines anderen Batches schneller als das Nachvollziehen des Krypto-Codes.
Passiert manchmal im Verlauf einer angeregten Diskussion...
Danke jedenfalls für die Anpassung und Entschlüsselung.
Grüße
Biber