Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Dateien aus einer Verzeichnisstruktur in eine andere kopieren wenn am Ziel schon vorhanden

Frage Entwicklung Batch & Shell

Mitglied: shorty-xs

shorty-xs (Level 1) - Jetzt verbinden

15.01.2009, aktualisiert 10:27 Uhr, 3044 Aufrufe, 2 Kommentare

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:
01.
:: sorter.cmd  
02.
:: (C) 2009 by Malte Schroeder  
03.
@echo off 
04.
color 02 
05.
set _title=File Sorter v1.0 by Malte Schroeder (C) 2009 
06.
title %_title% 
07.
 
08.
:start 
09.
::::::::::::::::::::::::::::::::::::: 
10.
::   Eingangsvariablen definieren  :: 
11.
::::::::::::::::::::::::::::::::::::: 
12.
set _input=leer 
13.
set _output=leer 
14.
set _mode=leer 
15.
::::::::::::::::::::::::::::::::::::: 
16.
::   Dateiendung definieren        :: 
17.
::::::::::::::::::::::::::::::::::::: 
18.
winput "set _ext=$input" "Please enter file extension (3 letters only) or * for all" > %temp%\ext.cmd 
19.
if errorlevel 1 goto ende 
20.
call %temp%\ext.cmd 
21.
del %temp%\ext.cmd 
22.
 
23.
::::::::::::::::::::::::::::::::::::: 
24.
::   Input Verzeichnis definieren  :: 
25.
::::::::::::::::::::::::::::::::::::: 
26.
if [%_input%]==[leer] call :fldsel Input 
27.
set _input=%_fldr% 
28.
if [%_output%]==[leer] call :fldsel Output 
29.
set _output=%_fldr% 
30.
::::::::::::::::::::::::::::::::::::: 
31.
::   Input Verzeichnis lesen       :: 
32.
::::::::::::::::::::::::::::::::::::: 
33.
start wbusy "File Sorter" "Read Input Directory" /marquee 
34.
dir %_input%\*.%_ext% /b /s > in.txt 
35.
wbusy "File Sorter" "Read Input Directory" /stop /timeout=1 
36.
::::::::::::::::::::::::::::::::::::: 
37.
::   Output Verzeichnis lesen      :: 
38.
::::::::::::::::::::::::::::::::::::: 
39.
start wbusy "File Sorter" "Read Output Directory" /marquee 
40.
dir %_output% /b /s > out.txt 
41.
wbusy "File Sorter" "Read Output Directory" /stop /timeout=1 
42.
::::::::::::::::::::::::::::::::::::: 
43.
::   Arbeitsmodus auswählen        :: 
44.
::::::::::::::::::::::::::::::::::::: 
45.
wprompt "%_title%" "Do you want to use Test mode" YesNoCancel ? 
46.
if errorlevel 3 goto ende 
47.
if errorlevel 2 set _mode=sharp 
48.
if errorlevel 1 set _mode=test 
49.
if %_mode%==sharp ( 
50.
          wprompt "%_title%" "ATTENTION You don't use Test-mode, target files could be permanently damaged!" YesNo ! 
51.
		  if errorlevel 2 goto ende 
52.
53.
::::::::::::::::::::::::::::::::::::: 
54.
::  Vergleich starten und kopieren :: 
55.
::::::::::::::::::::::::::::::::::::: 
56.
start wbusy "File Sorter" "Sorting in Progress...." /marquee 
57.
for /F "delims=" %%I in (in.txt) do call :subfinder "%%I" 
58.
wbusy "File Sorter" "Sorting done." /stop /timeout=0 
59.
goto ende 
60.
 
61.
:fldsel 
62.
set _fldr= 
63.
Wfolder2 "set _fldr=" "%userprofile%" "%1 directory" > %temp%\folder.cmd 
64.
call %temp%\folder.cmd 
65.
del %temp%\folder.cmd 
66.
goto :eof 
67.
 
68.
:subfinder 
69.
for /F "delims=" %%A in (out.txt) do ( 
70.
   if "%~nx1" == "%%~nxA" ( if %_mode%==sharp (xcopy %1 "%%A" /y /h /v /l /r  
71.
   echo %time% -- kopiere %1 nach "%%A" >> %date%.log) else ( echo %1 would be copied to %%A 
72.
		 echo %time% %1 would be copied to %%A >> %date%.log) 
73.
74.
75.
goto :eof 
76.
 
77.
:ende  
78.
del in.txt 
79.
del out.txt 
80.
set _input= 
81.
set _output= 
82.
notepad %date%.log
Greetz
Malte
Mitglied: Iwan
15.01.2009 um 12:15 Uhr
Mahlzeit,

warum einfach wenn es auch kompliziert geht:
01.
xcopy QUELLE ZIEL /s /v /u /y
Bitte warten ..
Mitglied: shorty-xs
15.01.2009 um 12:20 Uhr
Weil beide Verzeichnisstrukturen komplett unterschiedlich sind. Das Ziel enthält die ursprüngliche Sortierung der Dokumente, beim wiederherstellen der Daten (das was jetzt die Quelle ist) sind die Verzeichnisse maximal 2 Abzweigungen tief und einfach durchnummeriert. Ich muss also erstmal feststellen welche Datei wohin kopiert werden soll.

Wenn das so einfach gesesen währe, hätte ich die dateien auch einfach per drag'n drop rüberziehen können.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
C und C++
Dateien in Ordner kopieren anhand vom Teil eines Dateinamen (22)

Frage von onlyforu8373 zum Thema C und C ...

Batch & Shell
Dateien trotz Verwendung kopieren (2)

Frage von 112Timo zum Thema Batch & Shell ...

Batch & Shell
gelöst Ordner anhand von Dateinamen erstellen und Dateien in Ordner kopieren (3)

Frage von getmoving zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (22)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...