Dabei sollte eine Log-Datei erzeugt werden, die folgende Infos beinhaltet:
1. Welche Dateien nur in jeweils EINEM der Verzeichnisse enthalten sind
2. Falls eine Datei in beiden Verzeichnissen enthalten ist, stimmt die Datei mit der aus dem anderen Verzeichnis überein?
- Falls ja - sollte das in einem Logile "Results.txt" geloggt werden (Unterprogramm ":write")
- Falls Nein (keine Übereinstimmung) dann sollte das Log-File
- die Größe und das Änderungs-Datum der beiden Dateien enthalten so daß ich diese leicht vergleichen kann.
(Unterprogramm ":Filedaten")
3. Erschwerend kommt hinzu, daß die Dateien nicht immer an der selben Stelle sind. Manche Dateien sind in Unterverzeichnissen. Diese sind aber jeweils nur eine Ebene tief. (Unterprogramm ":Filename").
Das ganze sollte mit beiden Verzeichnissen gemacht werden. Das Skript zeigt, wie man Dateien anhand der Prüfsumme (GMD\) vergleicht. Wie man von Dateien die Größe und das Änderungsdatum ermittelt (GFI\).
Hier meine Lösung mit dem MPR.
Code: Select all
' +++ main_FCompare.rem +++
' Zweck:
' erstellt am: 21.04.2018
' von: Theo Gottwald
'========================
'#EXE:?path
'#SPI:AutoSettings
'#FDC:Ask
'#MAN:ra
'
' Compare Files that are in both Folder with each other, and log result.
'
'KRM\2
VAR\$$RES=?path\Result.txt
DEL\$$RES
VAR\$$FAA=F:\Path_01\Version01
VAR\$$FAA=F:\Path_02\Version02
VAR\$$TXT=RESULT
GSB\write
VAR\$$FOA=$$FAA
VAR\$$FOB=$$FAB
FEF\$$FOA|*.inc|DoItA|$$FIA!@
VAR\$$FOA=$$FAB
VAR\$$FOB=$$FAA
FEF\$$FOA|*.inc|DoItA|$$FIA!@
MBX\Ready
@
:DoItA
GSB\Filename
JIV\$$FIB=*|SingleF
' Datei existiert in beriden Ordnern
IEF\$$FIB
GSB\Pruefsumme
' Vergleiche Prüfsumme beider Dateien
IVV\$$PRA!$$PRB
GSB\Filedaten
VAR\$$TXT=$$FIA - $$FSA/$$FTA $crlf$$$FIB - $$FSB/$$FTB
GSB\write
ELSE
VAR\$$TXT=$$FIN --- OK
GSB\write
EVV\
ELSE
:SingleF
VAR\$$TXT=$$FIA - Single File
GSB\write
EEF\
@
:Filedaten
GFI\$$FIA
VAR\$$FSA=$v1$
VAR\$$FTA=$v2$
GFI\$$FIB
VAR\$$FSB=$v1$
VAR\$$FTB=$v2$
RET\
:Pruefsumme
GMD\1\$$FIA
VAR\$$PRA=$v1$
GMD\1\$$FIB
VAR\$$PRB=$v1$
RET\
:write
VAR\$$TXA=$$TXT$crlf$
ATF\$$RES<$$TXA
RET\
:Filename
ALB\$$FIA
VAR\$$FIN=$v1$
VAR\$$FIB=$$FOB\$$FIN
IEF\$$FIB
GOTO Filename_ok
ELSE
BLB\$$FIA
VAR\$$TMA=$v1$
ALB\$$TMA
VAR\$$TMA=$v1$
VAR\$$FIB=$$FOB\$$TMA\$$FIN
IEF\$$FIB
GOTO Filename_ok
ELSE
VAR\$$FIB=*
EEF\
EEF\
:Filename_ok
RET\
@