No więc skrypt wyglądałby tak:
-------------------------------------------------- CUT HERE :)
.Key FILENAME/A,BACKUP/F
.Bra {
.Ket }
FailAt 21
; FailAt to brzydkie rozwiązanie problemu z MakeDir wywalającym
; skrypt gdy katalog `VIN_bak` już istnieje... :)
;
; FILENAME/A - nazwa pliku, którego wersję sprawdzamy
; i któremy tą wersję dodany do nazwy. Musi występować zawsze.
;
; BACKUP/F - Katalog, do którego będą kopiowane pliki źródłowe
; (bez wersji w nazwie). Jeżeli nie będzie podany, to w aktualnym
; katalogu zostanie założony katalog `VIN_bak`, gdzie wylądują
; te pliki.
;
; Wszystko opiera się na CD (Current Directory - aktualnym katalogu).
; Trzeba pamiętać o tym przy dodawaniu do Opusa.
;
; Skrypt nie sprawdza bitów protekcji pliku! Nie zmieni nazwy, gdy
; ustawienie bitów protekcji na to nie pozwala.
; komunikat debugu ;) - ECHO "BACKUP"
IF {BACKUP}NULL EQ NULL
MakeDir VIN_bak >NIL:
Copy "{FILENAME}" VIN_bak QUIET >NIL:
ELSE
Copy "{FILENAME}" "{BACKUP}" QUIET >NIL:
ENDIF
; komunikat debugu ;) - ECHO "Tworzymy zmienną VerInName i wrzucamy do niej nazwę pliku."
Echo "{FILENAME}" >ENV:VerInName NOLINE
; komunikat debugu ;) - ECHO "Teraz dodajemy do VerInName myślnik..."
Echo " - " >>ENV:VerInName NOLINE
; komunikat debugu ;) - ECHO "...i versję pliku."
Version "{FILENAME}" FILE >>ENV:VerInName
; komunikat debugu ;) - ECHO "A teraz obcinamy ze zmiennej enter i tworzymy zmienną wynikową dla RENAME"
Echo "*"" >ENV:RenameOUT NOLINE
Echo $VerInName >>ENV:RenameOUT NOLINE
Echo "*"" >>ENV:RenameOUT NOLINE
; komunikat debugu ;) - ECHO "I na koniec zmieniamy nazwę pliku na to co powstało"
; komunikat debugu ;) - ECHO "w zmiennej VerInName"
;Echo $RenameOUT
Rename "{FILENAME}" $RenameOUT
; komunikat debugu ;) - ECHO "Happy End. ;)"
-------------------------------------------------- CUT HERE :)
Możesz go ściągnąć stąd:
http://www.apc74.ppa.pl/T/VerInName.lzx
W efekcie działania tego skryptu np. na programie aibb powstanie plik o nazwie:
aibb - AIBB 6.5 © LaMonte Koop