Batch: Dateien in einen Ordner verschieben, wenn sie im Zielordner nicht schon vorhanden sind
Hallo Leute,
ich bin neu im Forum und versuche mich an meiner ersten Frage. Bitte habt etwas Nachsicht, wenn ich mich umständlich ausdrücke.
Ich möchte ein Batch-Skript schreiben, das Dateien aus einem lokalen Ordner eines Notebooks auf einen Ordner auf einem freigegebenen Netzlaufwerk verschiebt (zum Archivieren). Im Quellverzeichnis sind beliebig viele Dateien mit unterschiedlichsten Namen und verschiedensten Dateitypen (z.B. DOCX, DOC, XLS, TXT, ZIP, EXE, BAT) vorhanden. Auf dem Zielverzeichnis ebenso. Leider kommt es vor, dass auf dem Zielverzeichnis Dateien schon vorhanden sind, die denselben Dateinamen wie Dateien im Quellverzeichnis haben. Diese sollen nicht verschoben werden, damit ich manuell kontrollieren kann, welche Version der betroffenen Dateien die aktuellste ist. Alle noch nicht im Zielverzeichnis vorhandenen Dateien sollen verschoben werden.
Ich habe Code gefunden, um Dateien dann zu verschieben, wenn die schon im Zielverzeichnis vorhanden sind:
In ähnlicher Art wollte ich einen Befehl nutzen, bei dem geprüft wird, ob die Dateinamen noch nicht bei der von dir ausgegebenen Liste enthalten sind.
Jedoch funktioniert der Befehl mit dem eingefügten not nicht.
Weiß jemand einen alternativen Befehl, ein Skript oder eine Möglichkeit, meinen bisherigen Befehl lauffähig zu machen?
Viele Grüße,
Sinzal
ich bin neu im Forum und versuche mich an meiner ersten Frage. Bitte habt etwas Nachsicht, wenn ich mich umständlich ausdrücke.
Ich möchte ein Batch-Skript schreiben, das Dateien aus einem lokalen Ordner eines Notebooks auf einen Ordner auf einem freigegebenen Netzlaufwerk verschiebt (zum Archivieren). Im Quellverzeichnis sind beliebig viele Dateien mit unterschiedlichsten Namen und verschiedensten Dateitypen (z.B. DOCX, DOC, XLS, TXT, ZIP, EXE, BAT) vorhanden. Auf dem Zielverzeichnis ebenso. Leider kommt es vor, dass auf dem Zielverzeichnis Dateien schon vorhanden sind, die denselben Dateinamen wie Dateien im Quellverzeichnis haben. Diese sollen nicht verschoben werden, damit ich manuell kontrollieren kann, welche Version der betroffenen Dateien die aktuellste ist. Alle noch nicht im Zielverzeichnis vorhandenen Dateien sollen verschoben werden.
Ich habe Code gefunden, um Dateien dann zu verschieben, wenn die schon im Zielverzeichnis vorhanden sind:
for /f "usebackq Delims=" %%i IN (`dir l:\ziel\*.* /s /b /ad`) do (move c:\quelle\"%%i" l:\ziel\)
In ähnlicher Art wollte ich einen Befehl nutzen, bei dem geprüft wird, ob die Dateinamen noch nicht bei der von dir ausgegebenen Liste enthalten sind.
for /f "usebackq Delims=" %%i not IN (`dir l:\ziel\*.* /s /b /ad`) do (move c:\quelle\"%%i" l:\ziel\)
Jedoch funktioniert der Befehl mit dem eingefügten not nicht.
Weiß jemand einen alternativen Befehl, ein Skript oder eine Möglichkeit, meinen bisherigen Befehl lauffähig zu machen?
Viele Grüße,
Sinzal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 276619
Url: https://administrator.de/forum/batch-dateien-in-einen-ordner-verschieben-wenn-sie-im-zielordner-nicht-schon-vorhanden-sind-276619.html
Ausgedruckt am: 03.04.2025 um 04:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo Sinzal!
Ist so aber nicht Fisch, nicht Fleisch - wenn Du schon den Quellpfad "herausnehmen" möchtest, dann konsequenter Weise auch beim
Alternativ Quelle und Ziel als Variablen (würde ich grundsätzlich empfehlen, außer bei wirklich überschaubaren Batches wie diesem Einzeiler):
Grüße
bastla
Ist so aber nicht Fisch, nicht Fleisch - wenn Du schon den Quellpfad "herausnehmen" möchtest, dann konsequenter Weise auch beim
move
- also etwa:cd /d c:\quelle
for /f "delims=" %%i in ('dir /b abc*.*') do if not exist "l:\ziel\%%i" move "%%i" l:\ziel
set "Quelle=c:\quelle"
set "Ziel=I:\Ziel"
set "Dateien=abc"
for /f "delims=" %%i in ('dir /b "%Quelle%\%Dateien%*.*"') do if not exist "%Ziel%\%%i" move "%Quelle%\%%i" "%Ziel%"
bastla