[#1] Komenda 'set' w AmigaDOS
Mam śmieszne pytanie. W MS-DOS jest coś takiego jak komenda "set". Można sobie nią zrobić coś takiego

set FOLDER1=katalog1
set FOLDER2=katalog2


i potem na przykład:

rmdir %FOLDER2% /Q /S
mkdir %FOLDER2%
xcopy %FOLDER1%* %FOLDER2%*



W AmigaDOS też jest komenda "set" ale prawdę mówiąc to nie potrafię tego użyć. Robię coś takiego:

set FOLDER1 RAM:


Jak napiszę w CLI:

set


to widzę, że coś takiego jest:

FOLDER1        RAM:



No ale próba zrobienia czegoś takiego:

CD FOLDER1


lub:

CD %FOLDER1%


Kończy się komunikatem "directory not found".

Może mnie ktoś nauczyć jak korzystać z "set" w AmigaDOS?



Ostatnia modyfikacja: 26.08.2009 17:27:00
[#2] Re: Komenda 'set' w AmigaDOS

@MDW, post #1

Zamiast % użyj $

Czyli:

CD $FOLDER1


SET - służy do ustawiania zmiennych lokalnych,
SETENV - to samo dla zmiennych globalnych.

Można mieć w systemie jednocześnie zmienną lokalną i globalną o tych samych nazwach lecz różnych zawartościach.

[#3] Re: Komenda 'set' w AmigaDOS

@APC74, post #2

Dzięki wielkie. Bardzo mi się to przyda. :)
Niby SetEnv używałem ale jakoś nigdy do odczytu wartości tylko zawsze ustawienia czegoś. :) Lecę próbować...


--------po chwili--------

Niestety coś średnio mi to działa. Robię:

set FOLDER1 data
makedir $FOLDER1


i dostaję katalog o nazwie "$FOLDER1" zamiast "data". Jak napiszę "set" w CLI to dostaję między innymi:

FOLDER1      data


więc zmienna jest utworzona.



Ostatnia modyfikacja: 26.08.2009 18:26:11
[#4] Re: Komenda 'set' w AmigaDOS

@MDW, post #3

Hm..
Do odczytu (wyświetlenia) wartości ze zmiennych lokalnych/globalnych służy GET / GETENV.

Do kasowania zmiennych lokalnych/globalnych służy UNSET / UNSETENV.

Do pobierania wartości ze zmiennych przez komendy ADOS służy $. W pierwszej kolejności przeglądana jest lista zmiennych lokalnych a następnie lista zmiennych globalnych. Jeżeli masz na obydwu listach zmienną o tej samej nazwie, to zostanie pobrana wartość ze zmiennej lokalnej. Jeżeli zdarzy się taka sytuacja, a musisz pobrać wartości zmiennej z listy zmiennych globalnych - to powinieneś nazwę zmiennej ująć w nawiasy sześcienne {}, przykład:

SET FOLDER1 RAM:
SETENV FOLDER1 DH1:


CD $FOLDER1
przeniesie do RAM:

CD ${FOLDER1}
przeniesie do DH1:

Trochę się o tym rozpisałem, ale wbrew pozorom amigowce mają z tą sytuacją bardzo często do czynienia - wystarczy zajrzeć do Startup-Sequence:

SetEnv Workbench $Workbench - Tworzona jest zmienna globalna "Workbench", której wartość jest pobierana ze zmiennej lokalnej "Workbench" - czyli mamy dwie takie same zmienne (o tej samej nazwie i wartości).
SetEnv Kickstart $Kickstart - j.w. dla zmiennej "Kickstart"
UnSet Workbench - Kasowana jest zmienna lokalna "Workbench"
UnSet Kickstart - j.w. dla zmiennej lokalnej "Kickstart".

[#5] Re: Komenda 'set' w AmigaDOS

@APC74, post #4

Dziękuję za wyjaśnienie. Wszystko się zgadza. Niestety przy komendzie makedir ciągle nazwą katalogu jest nazwa zmiennej, a nie to co ona zawiera. Nie mam pojęcia co jest. Na piechotę wpisując w CLI wszystko to działa, a w skrypcie AmigaDOS nie działa. Robię tak:

set TEST katalog
makedir $TEST


albo

makedir NAME=$TEST


i dostaję katalog

$TEST


zamiast

katalog


Pojęcia nie mam co jest...



------------po chwili------------

Już wiem co było nie tak. Moje nazwy zmiennych były:
SRC_FOLDER_1
SRC_FOLDER_2
DST_FOLDER

Wystarczyło, że wyrzuciłem z nazw zmiennych znak "_" (podkreślenie) i wszystko zaczęło działać. Czyżby w zmiennych systemowych AmigaOS nie można było używać znaku podkreślenia? W życiu bym nie przypuszczał. Ciekawe, bo katalog ENV: jest pełen różnych zmiennych z podkreśleniami. Dziwna sprawa...



Ostatnia modyfikacja: 26.08.2009 19:04:40
[#6] Re: Komenda 'set' w AmigaDOS

@MDW, post #5

Czyżby w zmiennych systemowych AmigaOS nie można było używać znaku podkreślenia?

Na pewno można w globalnych (które siedzą w ENV: ). Jeżeli chcesz zachować nazwy zmiennych z podkreśleniami to powinno to wyglądać np. tak:

SETENV SRC_FOLDER_1 NazwaKatalogu

MAKEDIR ${SRC_FOLDER_1}



Czyli zamiast SET powinieneś użyć SETENV a następnie podawać nazwę zmiennej ujętą w nawiasy sześcienne.



Ostatnia modyfikacja: 26.08.2009 19:47:52
[#7] Re: Komenda 'set' w AmigaDOS

@APC74, post #6

Racja. W globalnych się da. Właściwie mogę użyć zmiennej globalnej. Chociaż już użyłem lokalnej bez znaku podkreślenia. Aż tak bardzo mi na tych podkreśleniach nie zależy. A tak swoją drogą to ciekawe, że inny standard jest do zmiennych lokalnych i globalnych.

Dzięki wielkie za pomoc. Już działa. :)

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