Suivez-nous sur Mastodon

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
En pratique : Créer un bouton "Extract" pour Directory Opus et FileMaster
(Article écrit par Guillaume Guittenit et extrait de lesdocs.fr/amiga - avril 2026)
|
|
La plupart des utilisateurs de Directory Opus empilent maladroitement les boutons pour extraire
chaque archive : un pour le Zip, un pour le Lha, un pour le Lzx, un pour l'ADF, etc.
Mais pourquoi ne pas créer un unique bouton "Extraire" comme sur les systèmes d'exploitation modernes ?
Quand on extrait une archive, on n'a pas besoin de préciser son format : on extrait simplement tous les
fichiers. Étant donné que les gestionnaires de fichiers permettent de lancer des scripts AmigaDOS ou
ARexx, alors pourquoi ne pas l'implémenter ?
Je propose l'élégance et la simplicité d'un seul bouton "Extract" comme ci-dessous :
1. N'est-ce pas déjà prévu par défaut ?
Dans la configuration de base de Directory Opus 4,
il existe un bouton "Arc Ext". Ce bouton est relié
à un obscur script USER1 qui extrait uniquement les archives Lha, et ce script n'est pas facilement
modifiable. Suite à un double-clic sur une archive, Directory Opus reconnait également quelques types
de fichiers comme le Lha et d'autres formats, bien obsolètes, comme le Zoo, et les "Arc archives".
Si je parvenais à ajouter la reconnaissance des Zip et Lzx, cela fonctionnerait au double-clic sur l'archive.
Mais je tiens à l'ergonomie de mon unique bouton "Extract". De plus, je souhaite que mon script
fonctionne avec d'autres gestionnaires de fichiers comme l'excellent FileMaster.
2. Recherche de minimalisme et d'ergonomie dans Directory Opus
Affichant une haute résolution non entrelacée, précisément 724x270 pixels avec le suraffichage, j'ai
décidé de réduire la zone des boutons de Directory Opus à deux rangées afin de garder le maximum de place
pour l'affichage des fichiers. Beaucoup de boutons sont accessoires ou peuvent, par exemple, être remplacés
par un simple bouton "Multiview". C'est dans ce contexte minimaliste que m'est venue l'idée du bouton "Extract".
3. La recherche du script parfait
Après avoir écumé des scripts trop complexes s'appuyant sur des fonctionnalités tierces sur Aminet,
j'ai décidé de le coder moi-même, avec les commandes de base d'AmigaDOS, de la façon la plus minimaliste
possible, à l'aide de mon manuel DOS et de ChatGPT qui s'est révélé... assez approximatif concernant
AmigaDOS. En effet, l'IA propose parfois des commandes qui n'existent pas, provenant de MS-DOS, ou en
cas d'échec, m'oriente systématiquement vers ARexx. Mais ARexx est à utiliser quand AmigaDOS se révèle
insuffisant, et je suis certain qu'AmigaDOS peut le faire. L'IA est pointue sur les langages utilisés
par le plus grand nombre et beaucoup moins sur les langages "de niche". ChatGPT a néanmoins été un bon
assistant et m'a suggéré quelques bonnes idées.
4. Les extracteurs utilisés
Pour que le script fonctionne, il faudra bien évidemment télécharger et installer dans le dossier "C"
les extracteurs suivants :
Remarque : sous AmigaOS 3.2, la commande "DAControl" peut monter un volume ADF dans le Workbench.
Cependant, elle ne permet pas d'en extraire le contenu dans la destination indiquée par Directory Opus
ou FileMaster. C'est la raison pour laquelle je préfère utiliser la commande UnADF. Notez également qu'il
est impossible d'extraire les ADF non DOS.
5. Le script AmigaDOS
5.1 Stratégie n°1 : lire le type de fichier dans l'entête
La difficulté avec AmigaDOS, c'est d'arriver à déterminer le type d'archive. J'ai d'abord essayé de
lire les entêtes avec la commande "SEARCH" en recherchant, par exemple, l'expression "-lh"
pour les Lha. Cela fonctionnait, mais c'était très lent pour les archives volumineuses et je voulais
que mon script tourne sur les petites configurations. J'ai ensuite essayé de copier les premiers octets
de l'archive dans un fichier temporaire de la RAM pour y faire une recherche. Mais la commande "TYPE"
copie la totalité du fichier, il est impossible d'en extraire un bout. Je n'ai donc pas réussi à extraire
l'entête des fichiers avec toutes les commandes AmigaDOS.
J'ai vu qu'il existait une commande "Head" sur Aminet qui permet d'extraire l'entête d'un fichier,
mais je tiens à le faire avec les commandes de base d'AmigaDOS.
5.2 Stratégie n°2 : lire l'extension de l'archive
Changement de stratégie : j'opte pour la lecture de l'extension de l'archive. Et pour extraire
une extension, c'est plutôt ARexx qui sait faire avec la commande "Parse". Au bout de quelques heures
de tâtonnements, j'ai finalement trouvé une façon rapide de le faire en AmigaDOS :
- Je copie le nom de l'archive dans un fichier texte temporaire avec la commande "Echo".
- J'y recherche l'extension lha, zip ou lzx avec la commande "SEARCH" (insensible à la casse)
qui laisse un "0" dans l'indicateur de condition si l'extension n'est pas trouvée, et un "5" (WARN)
dans le cas contraire.
- Je lance la commande d'extraction appropriée grâce à l'instruction conditionnelle "IF NOT WARN".
Même si le script est basique, je me suis bien trituré les méninges pour arriver à cette simplicité :
.key file/A
ECHO <file> >T:file_tmp
SEARCH T:file_tmp "lha" QUIET
IF NOT WARN
Lha x "<file>"
ENDIF
SEARCH T:file_tmp "zip" QUIET
IF NOT WARN
Unzip "<file>"
ENDIF
SEARCH T:file_tmp "lzx" QUIET
IF NOT WARN
Lzx x "<file>"
ENDIF
SEARCH T:file_tmp "adf" QUIET
IF NOT WARN
unadf "<file>" DEST=""
ENDIF
DELETE T:file_tmp QUIET
|
Le ".key file/a" est relié à la variable "{f}" dans Directory Opus et FileMaster. Il désigne le
fichier à extraire, c'est-à-dire celui sur lequel l'utilisateur aura cliqué, et se manipule dans
le script avec la balise "<file>". L'expression "NOT WARN" ne fonctionne qu'avec le Workbench 2.0,
c'est donc la version minimum requise par ce script.
6. Ajout du bouton "Extract" dans Directory Opus ou FileMaster
Après avoir enregistré le script sous le nom "Extract" dans le dossier "S" du Workbench, il faut ajouter
un bouton "Extract" dans Directory Opus :
Il faudra cocher la fonction "CD destination" et je conseille vivement l'option "Fenêtre de sortie"
pour contempler le déroulé de l'extraction.
Parce qu'il n'y a pas que Directory Opus dans la vie et qu'il y a aussi FileMaster :
Dans FileMaster, le champ "Pattern" (motif) permet de réagir à un simple double-clic sur l'archive
Je sélectionne une archive, puis j'appuie sur le bouton "Extract". C'est magique !
Même succès sous FileMaster
Conclusion
Je suis heureux d'avoir pris le temps de faire ce petit script et qui aurait dû être implémenté par
défaut dans tous les gestionnaires de fichiers. J'espère qu'il sera utile à d'autres, et comme il est
simple et compréhensible, chacun pourra y ajouter d'autres formats d'archives.
- Le script "Extract" est téléchargeable ici : Extract.
- Ma configuration minimaliste pour Directory Opus 4 sous Workbench en haute résolution non entrelacée : DirectoryOpus.CFG.
Soutenez le travail de l'auteur
|
|
|