Batch - Dateien kopieren und prüfen
Hallo,
ich hab ein Script was schaut ob Dateien in einem Ordner sind. Wenn ja soll es diese in einen anderen Ordner kopieren.
Script
set foldername=eins
set count=0
for %%i in (%foldername%\*) do set /a count+=1
if "%count%"=="0" GOTO :ENDE
xcopy %foldername%\*.* Server\%foldername% /S /E /C /R /V
Das funktioniert.
Jetzt möchte ich die kopierten Dateien überprüfen. Also sichergehen das die Datei kopiert worden ist. Dazu müsste ich die Dateinamen in der "for" Schleife in Variablen speichern und dann mit "If exists" prüfen.
Ich weiß nicht wie ich in der Schleife jetzt eine Variable hochzähle. Ich denke da an sowas wie ein Array, aber das gibt es ja bei Batch nicht. (oder?)
Irgendwie weis ich nicht weiter, über eine Hilfestellung würde ich mich freuen.
Grüße
Michael
ich hab ein Script was schaut ob Dateien in einem Ordner sind. Wenn ja soll es diese in einen anderen Ordner kopieren.
Script
set foldername=eins
set count=0
for %%i in (%foldername%\*) do set /a count+=1
if "%count%"=="0" GOTO :ENDE
xcopy %foldername%\*.* Server\%foldername% /S /E /C /R /V
Das funktioniert.
Jetzt möchte ich die kopierten Dateien überprüfen. Also sichergehen das die Datei kopiert worden ist. Dazu müsste ich die Dateinamen in der "for" Schleife in Variablen speichern und dann mit "If exists" prüfen.
Ich weiß nicht wie ich in der Schleife jetzt eine Variable hochzähle. Ich denke da an sowas wie ein Array, aber das gibt es ja bei Batch nicht. (oder?)
Irgendwie weis ich nicht weiter, über eine Hilfestellung würde ich mich freuen.
Grüße
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 202412
Url: https://administrator.de/forum/batch-dateien-kopieren-und-pruefen-202412.html
Ausgedruckt am: 20.05.2025 um 19:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo Megadingz und willkommen im Forum!
Eine Frage vorweg: Du verwendest für das Kopieren die Option "/E" (und überflüssiger Weise auch "/S") - ist daraus zu schließen, dass es nicht nur um den angegebenen Ordner ("eins") geht, sondern auch Unterordner zu berücksichtigen sind?
Außerdem: Genügt eine einfache Existenzprüfung im Zielordner? Ich würde im Fall des Falles eher eine Prüfsumme (zB MD5) verwenden, um sicher zu stellen, dass die kopierten Dateien tatsächlich identisch mit den Quelldateien sind ...
Grüße
bastla
Eine Frage vorweg: Du verwendest für das Kopieren die Option "/E" (und überflüssiger Weise auch "/S") - ist daraus zu schließen, dass es nicht nur um den angegebenen Ordner ("eins") geht, sondern auch Unterordner zu berücksichtigen sind?
Außerdem: Genügt eine einfache Existenzprüfung im Zielordner? Ich würde im Fall des Falles eher eine Prüfsumme (zB MD5) verwenden, um sicher zu stellen, dass die kopierten Dateien tatsächlich identisch mit den Quelldateien sind ...
Grüße
bastla
Hallo Megadingz!
Könnte dann (ungetestet) etwa so gehen:
Das Löschen der kopierten Dateien ist (durch das "
Achtung - ev vorhandene gleichnamige Dateien im Zielordner werden beim Kopieren kommentarlos überschrieben!
Dateien aus dem Quellordner, die nach dem Kopieren im Zielordner nicht gefunden wurden, bleiben einfach in der Quelle erhalten.
Grüße
bastla
die Optionen /E und natürlich auch /S kann man weglassen.
Wenn auch der Zielordner bereits existiert, brauchst Du noch nicht mal "xcopy
" (kannst es aber natürlich trotzdem verwenden) ...Könnte dann (ungetestet) etwa so gehen:
@echo off & setlocal
set "foldername=eins"
set "target=\\Server\%foldername%"
dir /w /a-d "%foldername%" >nul 2>nul && (
copy "%foldername%" "%target%\" >nul
for /f "delims=" %%i in ('dir /b/a-d "%foldername%"') do if exist "%target%\%%~nxi" echo del "%%i"
)
pause
echo
" vor dem "del
") noch deaktiviert bzw wird durch Anzeigen des Löschbefehls simuliert - wenn Du das "echo
" entfernst, wird auch gelöscht.Achtung - ev vorhandene gleichnamige Dateien im Zielordner werden beim Kopieren kommentarlos überschrieben!
Dateien aus dem Quellordner, die nach dem Kopieren im Zielordner nicht gefunden wurden, bleiben einfach in der Quelle erhalten.
Grüße
bastla