Question AmigaDOS : variables

15 sujets de 1 à 15 (sur un total de 27)

  • 1
  • 2
  • sinisrus

      #6848

      bonjour voila le problème,

      j’ai une variable qui contient :

      « SAUVEGARDE:themes/test/ »

      j’aimerai récupérer dans une autre variable juste « test »

      merci pour votre aide

      Admin

      bigdan

        #109655

        ARexx est ton ami (ou python, perl, rebol, ruby, php, etc..).

        Je te donne les 3-4 lignes d’ARexx qui vont bien si tu veux ?

        WickedVinz

          #109656

          Yop !!

          Eventuellement en jouant avec

          list lformat

          Ou alors, je prendrait un peu de rexx… peut etre même que ça peut tenir en une ligne…

          Par défaut le shell de l’amiga n’a pas de commande de manipulation de chaine de charactère, mais tu peux en trouver sur aminet : par exemple en utilisant InString et substring de http://aminet.net/package/util/cli/CLI_Progs

          Mais pour obtenir la dernière partie de la chaine, il faudra peut etre faire une boucle… enfin moi je prendrais du rexx ;)

          Peut etre qq fans de grep pourrait te filer une ligne qui fonctionnerait

          sinisrus

            #109657

            avec list lformat ok mais comment?

            WickedVinz

              #109658

              Je viens de regarder la doc.. il me semblait qu’il y avait un %qqchose qui récupérait le nom du repertoire parent, mais ça reste « Sauvegarde:thèmes/test » (sans compter qu’il faut que le répertoire soit non vide…)

              Je peux te proposer une astuce de fou bien pourrave si tu le souhaites :

              Tu créés un fichier « .zorglub » (ou ton nom préféré) dans ton répertoire sauvegarde:themes/test/ dans lequel tu stocke « test » (idem si tu as d’autres rep à traiter : « brouette » dans le .zorglub de sauvegarde:themes/brouette/ ), ensuite tu fais un

              set var2 `type "$var.zorglub"`

              Attention, il faut que

              1. le repertoire existe

              2. le .zorglub existe

              3. ton $var aie le bon caractère final (à savoir : sauvegarde:themes/test/ ) pour concaténer correctement…

              Bref, il faudrait sécuriser ça avec des IF….

              bon, voila ma lamentable contribution… si j’avais le temps, je te donnerais une ligne en rexx à intégrer directement dans ton script, mais là, j’ai pas le temps dsl ;)

              Zorglub !

              sinisrus

                #109659

                WickedVinz= merci mais ça ne fera pas l’affaire j’aimerai un truc + du genre

                List lformat #?/ / »#? $VARsource >env:VARtest

                enfin j’invente le truc mais je pense que ça doit ce faire dans cette logique

                slobman

                  #109660

                  Hip !!

                  Un truc genre (tout sur la même ligne, hein !) :

                  set test `rx ‘say left(« $vartest », max(lastpos(« : », »$vartest »), lastpos(« / », »$vartest »,length(« $vartest »)-1)))’`

                  Si $vartest contient ta chaine… S’il n’y a pas de sous répertoire, cela retournera le volume.

                  [EDIT:] Cette ligne d’amigados appelant de l’arexx inline ne fait pas ce qui est demandé…

                  !! qiH

                  sinisrus

                    #109661

                    c’est de l’arexx mon script est en amigados ça va pas marché?

                    Sinon voici ce que je veu faire en faite avec mon script :

                    Je choisi un répertoire avec « requestfile » et je voudrai que le nom du répertoire choisi soit dans une variable

                    slobman

                      #109662

                      Hip !!

                      Non, c’est de l’amigados. La commande set, la commande rx et les backquotes (`) le confirme. rx est une commande comme les autres.

                      Cela dit, ça ne fais pas ce qui était demandé ;)

                      Ca m’apprendra à poster à 2h du mat’ ;)

                      !! qiH

                      sinisrus

                        #109663

                        je cherche partout dans l’amigaDOS et je trouve rien pour faire cela c’est galère

                        WickedVinz

                          #109664

                          Oué ça ne se fait pas sous AmigaDOS.. à moins de le recoder toi-meme…

                          Bon, je peux te proposer un truc à mettre dans ton script : (désolé pour la mise en page)

                          en supposant que ta variable soit $var…

                          ; La prochaine ligne utilise un script arexx inline (donc en une seule ligne) pour extraire l'info souhaitée

                          RX "ze_var='$var'; ze_var=LEFT(ze_var,LENGTH(ze_var)-1); ze_pos=MAX(LASTPOS(':',ze_var),LASTPOS('/',ze_var)); IF ze_pos>0 then; SAY SUBSTR(ze_var,ze_pos+1);Else; SAY ze_var"

                          En espérant que cela marche pour toi

                          Bon, y a qq limitation : il faut que le chemin spécifié dans $var soit toujours de la forme disque: ou disque:chemin/ (toujours avec un « : » ou un « / » à la fin)…

                          sinisrus

                            #109665

                            Pouaaa je touche pas l’arrexx c’est pas que je veux pas mais je suis graphiste je capte rien au code je touche tout juste à l’amigaDOS et rien d’autre :-/

                            Je suis sur que c’est possible en dos mais je trouve pas

                            ya pas un truc genre « lastparent » ou un moyen de mettre en variable le dernie repertoire

                            WickedVinz

                              #109666

                              J’ai modifié mon post pour simplifier encore l’expression.. tu n’as qu’à copier/coller… et modifier $var en ta valeur…

                              Pour récupérer dans var2 par exemple, tu fais juste un

                              SET var2 `RX "ze_var='$var'; ze_var=LEFT(ze_var,LENGTH(ze_var)-1); ze_pos=MAX(LASTPOS(':',ze_var),LASTPOS('/',ze_var)); IF ze_pos>0 then; SAY SUBSTR(ze_var,ze_pos+1);Else; SAY ze_var"`

                              Non, c’est pas possible en AmigaDOS, à moins d’utiliser des commandes non standard dispo éventuellement sur aminet, mais en feuillettant vite fait j’ai pas trouvé.. peut etre dans les shell unix…

                              Edit: qui plus est, ce que je te donne c’est du DOS : à insérer dans ton script amigaDOS tel quel…

                              elwood

                                #109667

                                Il faut toujours préciser sur quel système !!! :-)

                                Sur OS4:

                                set deuxieme=`cut $mavariable char 19-`

                                Autrement dit, je découpe $mavariable depuis le 19ème caractère jusqu’à la fin, et je mets dans la « deuxieme » variable.

                                Tu pourrais aussi découper en prenant les « / » comme délimiteur avec:

                                set deuxieme=`cut $mavariable word 2- separator « / »`

                                ce qui permet de fonctionner quelque soit la taille du texte avant le premier /

                                WickedVinz

                                  #109668

                                  ahah intéressant ça… en effet, je ne connais pas les nouvelles commandes d’os4…

                                15 sujets de 1 à 15 (sur un total de 27)

                                • 1
                                • 2
                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Développement Question AmigaDOS : variables

                                Amiga Impact