Variable Dateien verschieben nach Abgleich
Hi,
hat jemand einen Tipp für mich wie ich folgendes Problem lösen kann:
In einem Verzeichnis c:\data werden nacheinander (Abstand ca. 2-5 Min.) immer zwei Dateien abgelegt die den gleich Dateinamen aber eine andere Endung haben.
Beispiel:
12345.pdf und 12345.pd$
oder
54321.pdf und 54321.pd$
Wie kann ich einen Scheduler programmieren der mir jede Minute über dieses Verzeichnis läuft und nachschaut ob ein Datenpaar vorhanden ist. Wenn beide Dateien da sind sollen diese in ein anderes Verzeichnis verschoben werden.
Der Dateiname ändert sich jedes mal nur die die Endung ist jedes mal gleich (pdf & pd$).
Gruß
Pingu256
hat jemand einen Tipp für mich wie ich folgendes Problem lösen kann:
In einem Verzeichnis c:\data werden nacheinander (Abstand ca. 2-5 Min.) immer zwei Dateien abgelegt die den gleich Dateinamen aber eine andere Endung haben.
Beispiel:
12345.pdf und 12345.pd$
oder
54321.pdf und 54321.pd$
Wie kann ich einen Scheduler programmieren der mir jede Minute über dieses Verzeichnis läuft und nachschaut ob ein Datenpaar vorhanden ist. Wenn beide Dateien da sind sollen diese in ein anderes Verzeichnis verschoben werden.
Der Dateiname ändert sich jedes mal nur die die Endung ist jedes mal gleich (pdf & pd$).
Gruß
Pingu256
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 102197
Url: https://administrator.de/contentid/102197
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
Skizze:
Problem: wenn es mehr Dateien werden, werden alle immer kopiert. ;)
@echo off
set "verzeichnis=e:\pdfs"
set "ziel=e:\ziel"
:loop
FOR /F "delims=" %%i IN ('dir %verzeichnis%\*.pdf /b') DO call :handle "%%i"
ping -w 60000 1.1.1.1 -n 1 >nul
goto :loop
:handle
set "file=%~1"
set "file2=%~n1.pd$"
if exist "%verzeichnis%\%file2%" copy "%verzeichnis%\%file2%" "%ziel%\%file2%" & copy "%verzeichnis%\%file%" "%ziel%\%file%" & goto :eof
goto :eof
:ende
Zitat von @pingu256:
nachschaut ob ein Datenpaar vorhanden ist. Wenn beide Dateien da sind sollen diese in ein anderes Verzeichnis verschoben werden.
Das sollte die Batch aber tun...nachschaut ob ein Datenpaar vorhanden ist. Wenn beide Dateien da sind sollen diese in ein anderes Verzeichnis verschoben werden.
@Ren
Abgesehen davon wäre anzumerken, dass ein "dir /b" (ohne "/s") keinen vollständigen Pfad, sondern nur die Dateinamen liefert - insofern wäre ein
vorneweg und das zugehörige
am Ende der einfachere Weg.
Grüße
bastla
Problem: wenn es mehr Dateien werden, werden alle immer kopiert. ;)
... außer, es würde (wunschgemäß) verschoben ... Abgesehen davon wäre anzumerken, dass ein "dir /b" (ohne "/s") keinen vollständigen Pfad, sondern nur die Dateinamen liefert - insofern wäre ein
pushd "%verzeichnis%"
popd
Grüße
bastla
Ich hatte kopiert gelesen, ich bin schon müde. Aber das sollte ja kein Ding sein, ersetzt man copy durch move, wenn man sich sicher ist, dass im Zielverzeichnis nichts kaputt gehen kann, move /y. Sonst müsste man halt vorher noch nachsehen, ob die Datei schon existiert.
@echo off
set "verzeichnis=e:\pdfs"
set "ziel=e:\ziel"
:loop
FOR /F "delims=" %%i IN ('dir %verzeichnis%\*.pdf /b') DO call :handle "%%i"
ping -w 60000 1.1.1.1 -n 1 >nul
goto :loop
:handle
set "file=%~1"
set "file2=%~n1.pd$"
if exist "%verzeichnis%\%file2%" move /y "%verzeichnis%\%file2%" "%ziel%\%file2%" & move /y "%verzeichnis%\%file%" "%ziel%\%file%" & goto :eof
goto :eof
:ende
@Ren
"move" mit "/y" ist nur am Commandprompt erforderlich - in Batch wird automatisch überschrieben.
Grüße
bastla
"move" mit "/y" ist nur am Commandprompt erforderlich - in Batch wird automatisch überschrieben.
Grüße
bastla