Dateien aus einer Verzeichnisstruktur in eine andere kopieren wenn am Ziel schon vorhanden
Ich habe ja nun schon viele Informationen hier im Forum gefunden, nun möchte ich auch mal was zurück geben.
Nach einen Datenkrash wurden 2 Verzeichnisstrukturen wieder hergestellt. In der einen sind die Dateien OK, in der anderen der Verzeichnis baum.
Nun sollen die Dateien von A nach B kopiert werden, wenn die jeweilige Datei in B schon vorhanden ist, weil die Datein in B sich nicht öffnen lassen.
Ich habe die tools:
Wfolder2
Wbusy
Wprompt
winput
von Horst Schäffer benutzt, diese müssen im gleiche Verzeichnis wie die Batch datei abgelegt sein.
Es wird je Datum eine Logdatei erzeugt, darin enthalten sind Zeitstempel, der jeweiligen Aktion.
Es gibt eine Testfunktion, bei der erstmal nur untersucht wird und die zu kopierenden Daten ins Log geschrieben werden.
Die Arbeitsweise kann auf bestimmte Dateiendungen reduziert werden, da z.B. Bilder von einer Kamera gerne mal wieder bei DCFxyz001 anfangen, obwohl man die ja schonmal auf der Platte hat. So kann ich also mal mit anderen Dateiendungen anfangen und mich langsam durcharbeiten.
Ich bitte den deutsch/ englisch Mischmasch zu entschuldingen.
Vielleicht kann damit jemand was anfangen.
Hier der Source Code:
Greetz
Malte
Nach einen Datenkrash wurden 2 Verzeichnisstrukturen wieder hergestellt. In der einen sind die Dateien OK, in der anderen der Verzeichnis baum.
Nun sollen die Dateien von A nach B kopiert werden, wenn die jeweilige Datei in B schon vorhanden ist, weil die Datein in B sich nicht öffnen lassen.
Ich habe die tools:
Wfolder2
Wbusy
Wprompt
winput
von Horst Schäffer benutzt, diese müssen im gleiche Verzeichnis wie die Batch datei abgelegt sein.
Es wird je Datum eine Logdatei erzeugt, darin enthalten sind Zeitstempel, der jeweiligen Aktion.
Es gibt eine Testfunktion, bei der erstmal nur untersucht wird und die zu kopierenden Daten ins Log geschrieben werden.
Die Arbeitsweise kann auf bestimmte Dateiendungen reduziert werden, da z.B. Bilder von einer Kamera gerne mal wieder bei DCFxyz001 anfangen, obwohl man die ja schonmal auf der Platte hat. So kann ich also mal mit anderen Dateiendungen anfangen und mich langsam durcharbeiten.
Ich bitte den deutsch/ englisch Mischmasch zu entschuldingen.
Vielleicht kann damit jemand was anfangen.
Hier der Source Code:
:: sorter.cmd
:: (C) 2009 by Malte Schroeder
@echo off
color 02
set _title=File Sorter v1.0 by Malte Schroeder (C) 2009
title %_title%
:start
:::::::::::::::::::::::::::::::::::::
:: Eingangsvariablen definieren ::
:::::::::::::::::::::::::::::::::::::
set _input=leer
set _output=leer
set _mode=leer
:::::::::::::::::::::::::::::::::::::
:: Dateiendung definieren ::
:::::::::::::::::::::::::::::::::::::
winput "set _ext=$input" "Please enter file extension (3 letters only) or * for all" > %temp%\ext.cmd
if errorlevel 1 goto ende
call %temp%\ext.cmd
del %temp%\ext.cmd
:::::::::::::::::::::::::::::::::::::
:: Input Verzeichnis definieren ::
:::::::::::::::::::::::::::::::::::::
if [%_input%]==[leer] call :fldsel Input
set _input=%_fldr%
if [%_output%]==[leer] call :fldsel Output
set _output=%_fldr%
:::::::::::::::::::::::::::::::::::::
:: Input Verzeichnis lesen ::
:::::::::::::::::::::::::::::::::::::
start wbusy "File Sorter" "Read Input Directory" /marquee
dir %_input%\*.%_ext% /b /s > in.txt
wbusy "File Sorter" "Read Input Directory" /stop /timeout=1
:::::::::::::::::::::::::::::::::::::
:: Output Verzeichnis lesen ::
:::::::::::::::::::::::::::::::::::::
start wbusy "File Sorter" "Read Output Directory" /marquee
dir %_output% /b /s > out.txt
wbusy "File Sorter" "Read Output Directory" /stop /timeout=1
:::::::::::::::::::::::::::::::::::::
:: Arbeitsmodus auswählen ::
:::::::::::::::::::::::::::::::::::::
wprompt "%_title%" "Do you want to use Test mode" YesNoCancel ?
if errorlevel 3 goto ende
if errorlevel 2 set _mode=sharp
if errorlevel 1 set _mode=test
if %_mode%==sharp (
wprompt "%_title%" "ATTENTION You don't use Test-mode, target files could be permanently damaged!" YesNo !
if errorlevel 2 goto ende
)
:::::::::::::::::::::::::::::::::::::
:: Vergleich starten und kopieren ::
:::::::::::::::::::::::::::::::::::::
start wbusy "File Sorter" "Sorting in Progress...." /marquee
for /F "delims=" %%I in (in.txt) do call :subfinder "%%I"
wbusy "File Sorter" "Sorting done." /stop /timeout=0
goto ende
:fldsel
set _fldr=
Wfolder2 "set _fldr=" "%userprofile%" "%1 directory" > %temp%\folder.cmd
call %temp%\folder.cmd
del %temp%\folder.cmd
goto :eof
:subfinder
for /F "delims=" %%A in (out.txt) do (
if "%~nx1" == "%%~nxA" ( if %_mode%==sharp (xcopy %1 "%%A" /y /h /v /l /r
echo %time% -- kopiere %1 nach "%%A" >> %date%.log) else ( echo %1 would be copied to %%A
echo %time% %1 would be copied to %%A >> %date%.log)
)
)
goto :eof
:ende
del in.txt
del out.txt
set _input=
set _output=
notepad %date%.log
Greetz
Malte
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 106108
Url: https://administrator.de/contentid/106108
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar