[#1] szukam programu ew. skryptu
Hej.
Szukam programu/skryptu, który po zaznaczeniu plików sprawdzi ich wersje i doda (nie ta doda) ją na koniec nazwy; samą wersje bez dat itp. i skopiuje do innego katalogu? Ideałem byłby skrypt dla OpusM2.

[#2] Re: szukam programu ew. skryptu

@11MASTEr, post #1

Ciekawy problem, który można rozwiązać skryptem ADOSu. Z tym, że version np. dla LHA wyświetli:
LHA 2.12 68020+ Mar 14 2006
A przy innych plikach będzie to jeszcze dłuższe - może nie starczyć miejsca na zamieszczenie tego w nazwie pliku.
Ale mogę coś takiego spróbować napisać.
A może zamiast dodawać wynik działania "version" do nazwy dodać to do komentarza pliku?

[#3] Re: szukam programu ew. skryptu

@APC74, post #2

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

[#4] Re: szukam programu ew. skryptu

@APC74, post #3

Tak sobie pomyślałem, że może warto dodać jeszcze obsługę sytuacji, gdy plik nie ma wersji. Zaktualizowany skrypt jest tu:
http://www.apc74.ppa.pl/T/VerInName.lzx

[#5] Re: szukam programu ew. skryptu

@APC74, post #4

Można też w taki sposób by wersja umieszczona została w komentarzu do pliku a nie w jego nazwie.

Version Filename >ENV:ver
FileNote Filename "$ver"
zapisuje wersję programu "Filename" w komentarzu do tego pliku. Teraz zestaw plików moża zmienić za pomocą DOpusa lub komendy List z parametrem LFORMAT.

[#6] Re: szukam programu ew. skryptu

@Minniat, post #5

Mnie też się wydaje, że w komentarzu pliku byłoby lepiej (dlatego zresztą zaproponowałem to w pierwszym poście).
Wszystko byłoby dobrze, gdyby programiści przestrzegali wytycznych C= dotyczących tworzenia wersji dla swoich wypocin. Niestety nawet programiści AOSa to olewali, więc co tu wspominać o ludziach spoza AOSTeamu.
W każdym bądź razie skrypt jest napisany tak, że gdy wersja programu jest prawidłowo ustawiona, to w efekcie nazwa pliku wynikowego będzie dokładnie taka, jaką życzył sobie 11MASTEr (nazwa pliku wersja programu, bez daty ani nic innego).
Teraz tylko pozostaje maleńki problem do rozwiązania. Trzeba znaleźć program, który ma prawidłowo ustawioną wersję, żeby to udowodnić...

[#7] Re: szukam programu ew. skryptu

@APC74, post #6

Mnie też się wydaje, że w komentarzu pliku byłoby lepiej (dlatego zresztą zaproponowałem to w pierwszym poście).

Nie zauważyłem.

Program ma wersję gdy w jego "ciele" znajduje się ciąg $VER. Zatem można napisać mały programik w C, który szuka takiego ciągu, wyłuskuje z niego numer wersji np. 34.56 i dołącza do nazwy pliku.

Algorytm:

1. Otwórz plik o nazwie "nazwa_pliku"
2. Szukaj ciągu "$VER" w tym pliku
3. Szukaj znaków numerycznych np. "34.56"
4. Dodaj ciąg "34.56" do "nazwa_pliku"
5. Zmień nazwę pliku na "nazwa_pliku_34.56"



Ostatnia modyfikacja: 16.02.2009 16:30:21
[#8] Re: szukam programu ew. skryptu

@APC74, post #4

Dzięki. Miałem się zabrać za pisanie, ale mnie wyręczyłeś. Problem nie dot. programów tylko bibliotek MUI itp. a tam potrzebne wartości zazwyczaj są zapisane poprawnie.

Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem