home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Enigma Amiga Life 110
/
EnigmaAmiga110CD.iso
/
software
/
varie
/
cmp
/
update1.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
2000-02-11
|
2KB
|
93 lines
/*
** Update only all neccesary files from dir A -> dir B
** ©1999/2000 ALeX Kazik
*/
/* IMPORTANT: the src/dst dir MUST end with a colon or slash and MUST NOT be empty! */
/* SOURCE directory */
src = 'a/'
/* DESTINATION directory */
dst = 'b/'
/* the script to create, and which will be executed */
script = 'T:script'
/* SKIP the first N bytes */
skip = 0
/* temporary file */
tmpfile = 'T:update.tmp'
/*
** The main-program
*/
ADDRESS COMMAND
cmp 'A="' || src || '" B="' || dst || '" all nostat norc skipfirstnbytes=' || SKIP || ' newdir=10 newfile revbdir detail lformat %r%R%n >"' || TMPFILE || '"'
IF RC >= 20 THEN DO
SAY 'Error while executing cmp'
EXIT RC
END
CALL OPEN(tmp, tmpfile, 'read')
CALL OPEN(scr, script, 'write')
eq = 0
DO UNTIL EOF(tmp)
act = READCH(tmp, 1)
file = READLN(tmp)
IF act = '' THEN
BREAK
ELSE IF act = 'Q' THEN
eq = eq + 1
ELSE IF (act = 'A') | (act = '5') | (act = '9') THEN DO
SAY 'File to remove: ' || file
CALL WRITELN(scr, 'delete "' || dst || file || '" quiet')
END
ELSE IF (act = '4') | (act = '8') THEN DO
SAY 'Dir to remove: ' || file
CALL WRITELN(scr, 'delete "' || dst || file || '" quiet')
END
ELSE IF (act = 'B') | (act = '3') | (act = '7') THEN DO
SAY 'New File: ' || file
CALL WRITELN(scr, 'copy "' || src || file || '" "' || dst || file || '"')
END
ELSE IF (act = '2') | (act = '6') THEN DO
SAY 'New Dir: ' || file
CALL WRITELN(scr, 'makedir "' || dst || file || '"')
END
ELSE IF (act = 'E') | (act = '0') | (act = '1') THEN DO
SAY 'Error/Warning at dir/file: ' || file
EXIT 20
END
ELSE IF (act = 'L') | (act = 'C') | (act = 'D') | (act = 'S') | (act = 'T') THEN DO
SAY 'File to Update: ' || file
CALL WRITELN(scr, 'copy "' || src || file || '" "' || dst || file || '"')
END
ELSE DO
SAY 'Unknown Symbol >' || act || '<'
CALL CLOSE(tmp)
CALL CLOSE(scr)
EXIT 20
END
END
SAY eq || ' Equal files.'
CALL CLOSE(tmp)
CALL CLOSE(scr)
/*
** executing the changes
*/
execute '"' || script || '"'
/*
** That's all.
*/