Quickhack: Verzeichnisse vergleichen mit dem MPR

Moderator: MVogt

Post Reply
User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Quickhack: Verzeichnisse vergleichen mit dem MPR

Post by Theo_Gottwald » 21. Apr 2018, 14:51

Aufgabe war es zwei Verzeichnisse zu vergleichen.
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\

@

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: No registered users and 3 guests