Les fonctions variables sont très similaires aux variables internes, mais elles prennent un ou plusieurs paramètres (qui peuvent être des variables d'environnement ou même d'autres fonctions variables).
Lesfonctions variables sont utiles à l'invite de commande ainsi que dans les alias et les fichiers batch pour vérifier les ressources système disponibles, manipuler des chaînes de caractères et des nombres, et travailler avec des fichiers et des noms de fichiers.
Les fonctions variables intégrées dans TCC sont énumérées par ordre alphabétique dans les rubriques suivantes. Vous pouvez également obtenir de l'aide à l'invite de commande sur n'importe quelle fonction avec la commande HELP @functionname, ou en appuyant sur Ctrl-F1 lorsque le curseur se trouve sur le nom de la fonction. Voir la commandeHELP pour plus de détails.
Note : La commande FUNCTION peut être utilisée pour créer, éditer ou afficher des fonctions variables définies par l'utilisateur, et la commande UNFUNCTION pour les supprimer.
Pour une liste des fonctions variables organisées par catégories générales d'utilisation, voir Fonctions variables par catégorie.
Syntaxe
Pour qu'une fonction variable définie par l'utilisateur ou intégrée soit évaluée, son nom doit être précédé du signe de pourcentage % (%@EVAL, %@LEN, etc.). Toutes les fonctions variables doivent avoir des crochets [ ] entourant leur(s) paramètre(s), le cas échéant .Aucun espace n'est autorisé entre le nom de la fonction et les crochets[ ].
Taille de la mémoire / Espace disque / Unités de taille de fichier et format de rapport
Certaines fonctions variables, telles que @DISKFREE, acceptent un paramètre facultatif, le code d'échelle. Ces fonctions renvoient la taille d'un disque ou d'une entité sur le disque en tant que multiple du facteur d'échelle spécifié dans le tableau ci-dessous. Les lettres minuscules indiquent une puissance de 1 000, les lettres majuscules une puissance de 1 024.
Code |
Scale Factor |
Code |
Scale Factor |
Unit Name |
||
b |
1 |
|
B |
1 |
|
byte |
k |
1,000 |
10**3 |
K |
1,024 |
2**10 |
kilobyte |
m |
1,000,000 |
10**6 |
M |
1,048,576 |
2**20 |
megabyte |
g |
1,000,000,000 |
10**9 |
G |
1,073,741,824 |
2**30 |
gigabyte |
t |
1,000,000,000,000 |
10**12 |
T |
1,099,511,627,776 |
2**40 |
terabyte |
p |
1,000,000,000,000,000 |
10**15 |
P |
1,125,899,906,842,624 |
2**50 |
petabyte |
e |
1,000,000,000,000,000,000 |
10**18 |
E |
1,152,921,504,606,846,976 |
2**60 |
exabyte |
Vous pouvez inclure des virgules (ou le séparateur de milliers) dans la valeur renvoyée par une fonction en ajoutant la lettre c au code de l'échelle . Par exemple, pour ajouter des virgules à un résultat b (nombre d'octets), entrez bc comme paramètre, c'est-à-dire.. :
echo %@DISKFREE[C,bc]
Notes
| 1) | Les fabricants de disques utilisent les préfixes issus du système métrique (kilo, mega, giga, tera) dans leur sens originel (puissances de 1 000), tandis que les fabricants de mémoires et Microsoft utilisent les puissances légèrement plus grandes de 1 024 (2**10). |
| 2) | Le code d'échelle est l'un des rares cas où la casse est prise en compte. TCC est sensible à la casse. |
Voir la rubrique Formats de date.
Les noms de fichiers transmis en tant que paramètres de fonctions variables doivent être placés entre guillemets doubles s'ils contiennent des espaces blancs ou des caractères spéciaux. Plusieurs fonctions renvoient également des noms de fichiers ou des parties de noms de fichiers. Sur les lecteurs LFN, les chaînes renvoyées par ces fonctions peuvent contenir des espaces blancs ou d'autres caractères spéciaux. Pour éviter les problèmes qui pourraient être causés par ces caractères, mettez le nom renvoyé entre guillemets avant de le transmettre à d'autres commandes. Par exemple (l'une ou l'autre de ces méthodes fonctionnerait) :
set fname="%@findfirst[pro*]"
echo First PRO file contains:
type %fname
.....
set fname=%@findfirst[pro*]
echo First PRO file contains:
type "%fname"
.....
Si vous n'utilisez pas les guillemets dans la commande SET ou TYPE dans cet exemple, TYPE n'interprétera pas correctement les espaces blancs ou les caractères spéciaux dans le nom.
Paramètres de lettre de lecteur
Dans les fonctions variables qui prennent une lettre de lecteur en paramètre, comme @DISKFREE ou @READY, la lettre de lecteur doit être suivie de deux points. La fonction ne fonctionnera pas correctement si vous utilisez la lettre du lecteur sans les deux points.
Fonctions d'accès aux gestionnaires de fichiers
Les fonctions @FILEREAD, @FILEWRITE, @FILEWRITEB, @FILESEEK, @FILESEEKL et @FILECLOSE vous permettent d'accéder aux fichiers en fonction de leurhandle. Ces fonctions ne doivent être utilisées qu'avec les handles de fichiers renvoyés par @FILEOPEN, sauf indication contraire dans les fonctions individuelles. Si vous les utilisez avec une autre poignée de fichier, vous risquez d'endommager les fichiers.
Plusieurs fonctions acceptent une chaîne d'attributs de fichier pour aider à déterminer les fichiers à traiter. Lesrègles de construction de la chaîne d'attributs sont les mêmes que celles qui s'appliquent aux commutateurs d'attributs dans les commandes.
Exemples de fonctions
Vous pouvez utiliser les fonctions variables de différentes manières, en fonction de vos besoins. Voici quelques exemples pour vous donner une idée de ce qui est possible :
La commande ci-dessous indique à l'invite la quantité de mémoire libre (voir PROMPT pour plus de détails sur l'inclusion de fonctions variables dans l'invite):
prompt (%%@dosmem[K]K) $p$g
Créez une simple calculatrice en ligne de commande. La calculatrice est utilisée avec une commande telle que CALC 3 * (4 + 5) :
alias calc `echo La réponse est oui : %@eval[%$]`