![]() |
|
1. Présentation de l'API Script de Desktop Manager |
| 2. Liste des fonctions de l'API Script de Desktop Manager | ||
| 3. Exemple de Script |
1. Présentation de l'API Script de Desktop Manager |
|
|
L'API Script de Desktop Manager permet l'exécution de code AVANT ou APRES le démarrage de la session Notes. Une des utilisations les plus courantes concerne la mise en place de procédures de backup des fichiers de configuration Notes des utilisateurs (names.nsf, bookmark, espace de travail...) afin de pouvoir les restaurer en cas de corruption ou les recopier sur un nouveau poste (roaming). Comme chaque entreprise veut pouvoir adapter ses procédures de backup, de restauration et de roaming à son contexte, la solution la plus souple est de fournir une API complète de manipulation de fichiers (copie, suppression, ...).
Il existe 3 types de fichier de Script :
- Les fichiers Pre-Session Script (DskMgrPre.ini)
Le Pre-Session Script est exécuté depuis le Hook, au démarrage du client Notes, avant la demande de mot de passe. Ce script est généralement utilisé pour le roaming, afin de recopier les fichiers de l'utilisateur (names.nsf, bookmark, espace de travail, fichier id, notes.ini...) dans le répertoire Notes courant avant que celui-ci n'y accède. Ce script s'exécute dans le contexte Lotus Notes, il peut donc utiliser les fonctions manipulant les ressources Notes (modification des variables du Notes.ini, création / modification de documents dans les bases Notes...).
- Les fichiers Post-Session Script (DskMgrPost.ini)
Le Post-Session Script est exécuté par le DskMgr.exe, après la fin de la session Notes, après l'exécution des commandes du fichier DskMgr.ini (post actions). Ce script est généralement utilisé pour le backup des fichiers de l'utilisateur (names.nsf, bookmark, espace de travail, fichier id, notes.ini...) dans un répertoire dédié. Ce script s'exécutant après les modifications apportées aux fichiers Notes, les fichiers sont donc dans un état stable, ils peuvent être déplacés sans risque. Comme il n'y a pas de session Notes active lors de l'exécution de Post Script, il n'est pas possible de faire appel à des fonctions Notes.
- Les fichiers Scripts
Les fonctions présentes dans l'API Script de Desktop Manager peuvent également être utilisées en dehors des fichiers Pre et Post Session. Il suffit de créer un fichier texte contenant les lignes de code et de faire exécuter le fichier de commandes par le programme DskMgr.exe, au moyen de la commande -SCRIPT (avec affichage de la fenêtre de progression) ou -SCRIPTNW (sans la fenêtre de progression : NoWindow) :
DskMgr.exe -SCRIPT <chemin du fichier Script>
Ce mode d'exécution peut être utilisé pour exécuter des opérations sur les fichiers en parallèle de l'exécution de Notes (copie de gros fichiers) si le fichier de commande est lancé depuis un Agent Script lié à une Tâche ou un Profile. On peut également utiliser de tels Scripts de commande pour piloter l'installation silencieuse d'un client Notes ou la montée de version.
Il est aussi très pratique d'utiliser cette méthode de lancement pour debugger les fichiers Scripts Pre ou Post.
Les fichiers Pre-Session et Post-Session Script sont créés à partir des lignes de commandes saisies dans la section Action Script des documents de Profiles ou de Tâche :
Dès que le document de Profile ou la Tâche contenant les lignes de commande des Scripts est appliqué à l'utilisateur, les fichiers Pre-Session Script (DskMgrPre.ini) et Post-Session Script (DskMgrPost.ini) sont créés sur le disque, dans le répertoire hébergeant le fichier DskMgr.ini. Les mots clés @, # et % sont remplacés par leur valeurs respectives et le fichier créé sur disque aura ainsi les chemins et les données contextuels à l'utilisateur. Il est possible de voir le fichier généré pour l'utilisateur, dans la section Desktop Manager Settings / Action Script du document User :
Si le Script installé sur le poste de provient d'un document de Profile, celui-ci sera exécuté tous les jours, tant que le Profile reste attaché à l'utilisateur. Dès que le Profile est retiré de la liste des Profiles appliqués à l'utilisateur, le fichier Script associé sera supprimé automatiquement du disque. Si le Script installé sur le poste provient d'un document Tâche, il sera exécuté une fois et sera ensuite supprimé. Si la Tâche est récurrente, le fichier Script sera recréé / supprimé autant de fois que la Tâche tournera.
Si plusieurs fichiers Script sont déposés par différentes Tâches ou Profiles, l'ordre d'exécution des Scripts celui sera celui de l'exécution des Tâches / Profile (les Tâches d'abord, les Profiles ensuite, dans leur ordre respectif).
Lors de l'exécution des Script, un fichier de Log recueille les actions effectuées par les lignes de commande du fichier. Le fichier de Log est toujours placé dans le répertoire Temporaire Windows de l'utilisateur. Le nom du fichier de Log dépend du type de fichier Script :
| Pre-Script : | DskMgrPreLog_date_pid.txt | 'date' est la date de démarrage du Script, 'pid' est l'ID du process |
| Post-Script : | DskMgrExeLog_pid.txt | les données se trouvent à la fin du fichier car le début du fichier correspond aux Post-Actions du DskMgr.ini |
| Script : | DskMgrExeLogScript_pid.txt |
Il est possible d'écrire des informations dans le fichier de Log avec la fonction LogLine de l'API Script. Cela permet de debugger efficacement l'exécution des Script
2. Liste des fonctions de l'API Script de Desktop Manager |
|
|
Afin de simplifier la lecture des des fonctions de l'API, elles ont été regroupées en blocs fonctionnels (toutes les fonctions manipulant des fichiers sont ensembles).
Ensuite, dans chaque catégorie, les tableaux présentent rapidement les fonctions disponibles dans l'API Script de Desktop Manager, en indiquant dans quel type de fichier Script elles peuvent être appelées :
Catégories |
|
|
Structure et Opérateurs du langage |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| ExitScript | Arrête l'exécution du Script | |
Commentaire
Toute ligne du fichier commençant par les caractères ';' ou '#', ou toute ligne vide.
Exemple :
### Copy the file
Affectation de variable
variable = constante
variable = variable
Par convention et afin d'améliorer la lisibilité du code, il est préférable de mettre un '$' à la fin du nom des variables et des "" autour des constantes.
Exemple :
data_path$ = "d:\Lotus\Notes\data"
file_name$ = "names.nsf"
notes_names_path$ = data_path$\file_name$ ' Implicit concatenation => notes_names_path$ = "d:\Lotus\Notes\data\names.nsf"
Concaténation de chaînes de caractères
La concaténation des chaines de caractères est implicite, il n'y a pas d'opérateur dédié. Il est ainsi possible de construire des chaines de carcatères en collant des variables et des constantes. L'évaluation se fait au moment de l'appel de la fonction. Lors de l'évaluation, les doublons de \ sont supprimés ("d:\lotus\notes\data\\names.nsf" devient "d:\lotus\notes\data\names.nsf")
Exemple :
data_path$ = "d:\Lotus\Notes\data"
file_name$ = "data_path$\names.nsf" ' "d:\Lotus\Notes\data" + "\names.nsf" = "d:\Lotus\Notes\data\names.nsf"
error$ = DeleteFile("data_path$\cache.dsk") ' "d:\Lotus\Notes\data\cache.dsk"
Liste d'éléments
Une liste est une chaîne de caractère contenant des éléments séparés par un caractère. Il est possible de manipuler ces éléments avec des fonctions dédiées (ajout d'un élément, suppression d'un élément, accès au Nième élément...).
Exemple :
data_path_list$ = "c:\Program Files\Lotus\Notes\data\-c:\Lotus\Notes\data-d:\Lotus\Notes\data-u:\Notes\data\"
path_1$ = GetNthElement(data_path_list$,"-","1") ' "c:\Program Files\Lotus\Notes\data"
new_list$ = RemoveElement(data_path_list$,"-","c:\*\") ' "d:\Lotus\Notes\data-u:\Notes\data\"
Expression numérique
Caractères autorisés : + - * / ( )
L'évaluation des expressions numériques renvoie un entier.
Exemple :
file_size$ = GetFileSize("data_path$\names.nsf")
new_file_size$ = (2*(file_size$-10)) + 1024
Label
Nom du label suivit immédiatement du caractère :
Exemple :
Exit_Process:
Saut
GOTO suivit du nom du label, sans le caractère ':'.
Exemple :
Goto Exit_Process
Saut conditionnel
IF (variable opérateur variable|constante) GOTO label
Les opérateurs possibles sont :
| = | égal | ||
| != | différent | ||
| > | strictement supérieur | ||
| >= | supérieur ou égal | ||
| < | strictement inférieur | ||
| <= | inférieur ou égal |
Exemple :
If (data_path$ = "") Goto Exit_Process
If (file_name$ != data_path$\file_name$) Goto Exit_Process
If (file_size$ > "1500") Goto Exit_Process
Bloc conditionnel
IF (variable opérateur variable|constante) THEN
...
ENDIF
IF (variable opérateur variable|constante) THEN
...
ELSE
...
ENDIF
Les opérateurs possibles sont :
| = | égal | ||
| != | différent | ||
| > | strictement supérieur | ||
| >= | supérieur ou égal | ||
| < | strictement inférieur | ||
| <= | inférieur ou égal |
Il est possible d'imbriquer plusieurs IF THEN / ELSE / ENDIF.
Exemple :
If (backup_folder$ != "") Then
CopyFile("data_path$\names.nsf","backup_folder$\names.nsf")
CopyFile("data_path$\bookmark.nsf","backup_folder$\bookmark.nsf")
CopyFile("data_path$\headline.nsf","backup_folder$\headline.nsf")
EndIf
If (backup_folder$ != "") Then
CopyFile("data_path$\names.nsf","backup_folder$\names.nsf")
CopyFile("data_path$\bookmark.nsf","backup_folder$\bookmark.nsf")
CopyFile("data_path$\headline.nsf","backup_folder$\headline.nsf")
Else
CopyFile("data_path$\names.nsf","z:\Backup\names.nsf")
CopyFile("data_path$\bookmark.nsf","z:\Backup\bookmark.nsf")
CopyFile("data_path$\headline.nsf","z:\Backup\headline.nsf")
EndIf
Boucle
FOR variable = variable|constante TO variable|constante
...
NEXT
Il est possible d'imbriquer plusieurs FOR = TO / NEXT.
Exemple :
For counter$ = 1 To 10
MessageBox("Test Windows","This is popup : counter$","OK")
Next
#### Copy all dictionary files (*.dic) from data folder to backup folder
file_list$ = SearchMultiFile("data_path$\","*.dic","","1")
file_number$ = GetElementNumber("file_list$","|")
For counter$ = 1 To file_number$
file_path$ = GetNthElement("file_list$","|","counter$")
file_name$ = RightStringBack("file_path$","\")
CopyFile("file_path$","backup_folder$\file_name$")
Next
Arrêt
Mot clé EXITSCRIPT, seul sur sa ligne.
Exemple :
ExitScript
Passage de paramètres extérieurs
Il est possible de transmettre des paramètres extérieurs au script. Ces paramètres sont placés sur la ligne de commande lançant l'exécutable DskMgr.exe :
DskMgr.exe -SCRIPT <chemin du fichier Script> <param 1> <param 2> ...
Exemple :
DskMgr.exe -SCRIPT "C:\Temp\Script.ini" "CN=ServerMail1/O=Coooperteam" "c:\Install\Files"
Dans le script, ces paramètres sont référencés par les mots clés ARG1$, ARG2$, ARG3$... Le nombre maximum de paramètres autorisés est 10 (ARG10$).
Exemple :
server_name$ = ARG1$
install_path$ = ARG2$
SetFilePrefVar("install_path$\setup.ini","SERVERNAME",server_name$)
Utilisation des guillemets dans les chaines de caractères
Si vous avez besoin d'utiliser des guillemets (") dans une chaine de caractères, déclarez une variable dédiée (quote$), initialisez sa valeur à """ et utilisez la comme indiqué dans l'exemple suivant :
quote$ = """
command_line$ = "192.168.12.25 quote$C:\Program Files\Lotus\Notes\Notes.iniquote$" => 192.168.12.25 "C:\Program Files\Lotus\Notes\Notes.ini"
error$ = RunSequenceProgram("d:\Tools\FtpFile.exe","command_line$")
Ecriture dans le fichier de Log
Il est possible d'arrêter les écritures dans le fichier de Log (créé dans %TEMP%\DskMgr\) en utilisant le mot clé STOPLOG, seul sur sa ligne. Il est possible de reprendre les écritures en utilisant le mot clé STARTLOG.
Exemple :
StopLog
...
StartLog
Fonctions de gestion de fichiers |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| CopyFile | Crée une copie d'un fichier existant dans un nouvel emplacement. | |
|
|
||||
| CopyLargeFile | Crée une copie d'un gros fichier existant dans un nouvel emplacement. | |
|
|
||||
| UpdateFile | Met à jour la copie d'un fichier si celui-ci a été récemment modifié. | |
|
|
||||
| CopyDeltaFile | Met à jour la copie d'un fichier de façon incrémentale. | |
|
|
||||
| CopyMultiFile | Copie un ensemble de fichiers vers un nouvel emplacement. | |
|
|
||||
| UpdateMultiFile | Copie les fichiers récemment modifiés vers un nouvel emplacement. | |
|
|
||||
| MoveFile | Déplace un fichier existant à un nouvel emplacement. | |
|
|
||||
| DeleteFile | Supprime un ou plusieurs fichiers du disque. | |
|
|
||||
| ZipFile | Zippe un fichier existant. | |
|
|
||||
| ZipMultiFile | Zippe un ensemble de fichiers. | |
|
|
||||
| UnzipFile | Dé-zippe un fichier Zip. | |
|
|
||||
| CreateFile | Crée un nouveau fichier vide. | |
|
|
||||
| SearchReplaceFile | Recherche / Remplace une valeur dans un fichier texte. | |
|
|
||||
| ModifyFile | Modifie le contenu d'un fichier existant. | |
|
|
||||
| AddLineFile | Ajoute une ligne dans un fichier texte. | |
|
|
||||
| GetFileSize | Récupère la taille d'un fichier. | |
|
|
||||
| GetFileLineNumber | Récupère le nombre de lignes d'un fichier texte. | |
|
|
||||
| GetFileNthLine | Récupère la nième ligne d'un fichier texte. | |
|
|
||||
| GetFileLastModifDate | Récupère la date de dernière modification d'un fichier. | |
|
|
||||
| GetFileChecksum | Calcule le checksum d'un fichier. | |
|
|
||||
| GetProductVersion | Récupère le numéro de version d'un fichier. | |
|
|
||||
| IsFileExist | Détermine si un fichier existe sur le disque. | |
|
|
||||
| SearchMultiFile | Recherche les chemins de fichiers sur le disque. | |
|
|
||||
| GetShortPath | Renvoie le chemin court d'un fichier. | |
|
|
||||
| GetLongPath | Renvoie le chemin long d'un fichier (sans les ~). | |
|
|
||||
| MountVolume | Crée un point de montage pour un volume. | |
|
|
||||
| CreateShortcut | Crée un raccourci vers un fichier ou un exécutable. | |
|
|
error = CopyFile("source file path","new file path")
source file path : chemin du fichier source.
new file path : chemin où créer la copie.
error : "" si la copie a réussi, message d'erreur sinon.
Créer une copie d'un fichier existant.
Exemple :
error$ = CopyFile("notes_data_folder$\names.nsf","backup_folder$\names.nsf")
If (error$ != "") Goto END
result = CopyLargeFile("source file path","new file path","quota")
source file path : chemin du fichier source.
new file path : chemin où créer la copie.
quota : taille maximum (en Mo) à copier à chaque appel de la fonction. "0" pour indiquer qu'il faut tout copier d'un seul coup.
result : "0" si la copie est terminée, "1" si la taille maximum a été copiée lors de l'appel, "2" ou plus en cas d'erreur.
Crée une copie d'un fichier de grande taille. Il est possible d'effectuer la copie sur plusieurs jours, en ne copiant que X Mo de donnée à chaque appel.
Exemple :
result$ = CopyLargeFile("u:\package.msi","temp_folder$\package.msi","50")
If (result$ > "0") Goto END
error = UpdateFile("source file path","new file path")
source file path : chemin du fichier source.
new file path : chemin où créer / mettre à jour la copie du fichier.
error : "" si la copie a réussi, message d'erreur sinon.
Met à jour la copie d'un fichier si la date de modication du fichier source > date modification du fichier destination (ou si le fichier de destination n'existe pas).
Exemple :
error$ = UpdateFile("roaming_folder$\names.nsf","notes_data_folder$\names.nsf")
If (error$ != "") Goto END
error = CopyDeltaFile("source file path", "local copy file path", "network copy file path")
source file path : chemin du fichier source.
local copy file path : copie du fichier en local.
network copy file path : chemin où créer / mettre à jour la copie du fichier sur un disque réseau.
error : "" si la copie a réussi, message d'erreur sinon.
Copie un fichier ou Met à jour la copie d'un fichier sur un disque réseau, en minimisant les écritures (seul ce qui a changé depuis la dernière copie est mis à jour). Ce processus incrémental est tout à fait indiqué pour les copies de sauvegarde quotidiennes des fichiers sur un disque réseau, lors de la mise en place du roaming. Afin de limiter au maximum les écritures dans le fichier hébergé sur le disque réseau (network copy file), une copie du fichier est conservée en local (local copy file). Elle sert à calculer ce qui a été modifié dans le fichier d'origine (source file) depuis sa dernière sauvegarde. Afin de ne pas perturber le fonctionnement du client Notes, il est préférable de changer l'extension de la copie locale (ajout de .bck au nom du fichier).
Exemple :
error$ = CopyDeltaFile("notes_data_folder$\names.nsf", "backup_local_folder$\names.nsf.bck", "network_roaming_folder$\names.nsf")
If (error$ != "") Goto END
result = CopyMultiFile ("src_folder_path", "dst_folder_path", "copy_list", "exclusion_list", "recursive")
src_folder_path : Chemin du répertoire Source.
dst_folder_path : Chemin du répertoire Destination.
copy_list : Liste des fichiers ou des dossiers à copier (l'utilisation du caractère joker '*' est autorisée). Le séparateur multi-valeurs est la virgule.
exclusion_list : Liste des fichiers ou des dossiers à NE PAS copier (l'utilisation du caractère joker '*' est autorisée). Le séparateur multi-valeurs est la virgule.
recursive : "1"si la recherche des fichiers à copier se fait dans les sous-répertoires du répertoire Source.
Copie un ensemble de fichiers présents sur le poste de l'utilisateur dans le répertoire Source, vers le répertoire de Destination, en re-créant l'arborescence des fichiers.
Exemple :
error$ = CopyMultiFile("notes_data_folder$", "backup_folder$", "*.nsf,*.ntf,*.ndk,*.dsk", "*\Cache.ndk,*\Cache.dsk", "1")
If (error$ != "") Goto END
result = UpdateMultiFile ("src_folder_path", "dst_folder_path", "synchro_list", "exclusion_list", "recursive")
src_folder_path : Chemin du répertoire Source.
dst_folder_path : Chemin du répertoire Destination.
synchro_list : Liste des fichiers ou des dossiers à synchroniser (l'utilisation du caractère joker '*' est autorisée). Le séparateur multi-valeurs est la virgule.
exclusion_list : Liste des fichiers ou des dossiers à NE PAS copier (l'utilisation du caractère joker '*' est autorisée). Le séparateur multi-valeurs est la virgule.
recursive : "1"si la recherche des fichiers à synchroniser se fait dans les sous-répertoires du répertoire Source.
Synchronise un ensemble de fichiers présents sur le poste de l'utilisateur dans le répertoire Source, vers le répertoire de Destination, en re-créant l'arborescence des fichiers. Les fichiers du répertoire Destination ne sont remplacés par ceux du répertoire Source que dans le cas où ceux-ci sont plus récents (date de modification fichier Source > date de modification fichier Destination).
Exemple :
error$ = UpdateMultiFile("notes_data_folder$", "backup_folder$", "*.nsf,*.ntf,*.ndk,*.dsk", "*\Cache.ndk,*\Cache.dsk", "1")
If (error$ != "") Goto END
error = MoveFile("current file path","new file path")
current file path : chemin actuel du fichier
new file path : chemin où déplacer le fichier ou nouveau nom du fichier
error : "" si le déplacement a réussi, message d'erreur sinon.
Déplace ou renomme un fichier.
Exemple :
error$ = MoveFile("notes_data_folder$\notes.ini","notes_data_folder$\notes.ini.old")
If (error$ != "") Goto END
error = DeleteFile("file path")
file path : chemin du fichier ou des fichiers (utilisation du caractère joker *)
error : "" si la suppression a réussi, message d'erreur sinon.
Supprime un ou plusieurs fichiers.
Exemple :
error$ = DeleteFile("temp_folder$\DskMgrLog_*.txt")
error = ZipFile("current file path","file name","zipped file path")
current file path : chemin du fichier que l'on veut zipper.
file name : nom du fichier à stocker dans le fichier Zip.
zipped file path : chemin du fichier zip à créer
error : "" si la compression a réussi, message d'erreur sinon.
Compresse un fichier.
Exemple :
error$ = ZipFile("notes_data_folder$\names.nsf","names.nsf","notes_data_folder$\names.zip")
If (error$ != "") Goto END
result = ZipMultiFile ("src_folder_path", "zip_file_path", "zip_list", "exclusion_list", "recursive")
src_folder_path : Chemin du répertoire Source contenant les fichiers à zipper.
zip_file_path : Chemin du fichier Zip à créer.
zip_list : Liste des fichiers ou des dossiers à zipper (l'utilisation du caractère joker '*' est autorisée). Le séparateur multi-valeurs est la virgule.
exclusion_list : Liste des fichiers ou des dossiers à NE PAS zipper (l'utilisation du caractère joker '*' est autorisée). Le séparateur multi-valeurs est la virgule.
recursive : "1"si la recherche des fichiers à zipper se fait dans les sous-répertoires du répertoire Source.
Zip un ensemble de fichiers présents sur le poste de l'utilisateur dans le répertoire Source, dans un fichier Zip, en conservant l'arborescence des fichiers.
Exemple :
error$ = ZipMultiFile("notes_data_folder$", "backup_folder$\Archive.zip", "*.nsf,*.ntf,*.ndk,*.dsk", "*\Cache.ndk,*\Cache.dsk", "1")
If (error$ != "") Goto END
unzip_file_path = UnzipFile("zipped file path","unzip folder path")
zipped file path : chemin du fichier zip à décompresser
unzip folder path : chemin du répertoire où déziper les fichiers
unzip_file_path : chemin du dernier fichier dézippé, "" si la décompression a échoué.
Décompresse un fichier Zip. Le résultat peut être constitué d'un ensemble de fichiers et de répertoires.
Exemple :
file_path$ = UnzipFile("notes_data_folder$\names.zip","%TEMP%\")
If (file_path$ = "") Goto END
error = CreateFile("new file path")
new file path : chemin du fichier à créer.
error : "" si la création a réussi, message d'erreur sinon.
Crée un fichier vide.
Exemple :
error$ = CreateFile("temp_folder$\Notes.ini")
If (error$ != "") Goto END
error = SearchReplaceFile("file path","source value","replace value")
file path: chemin du fichier à modifier.
source value: chaîne de caractère à rechercher dans le fichier
replace value: chaîne de caractère de remplacement
error: "" si la modification a réussi, message d'erreur sinon.
Modifie le contenu d'un fichier texte existant en recherchant une valeur pour la remplacer par une autre.
Exemple :
error$ = SearchReplaceFile("notes_program_folder$\Notes.ini", "c:\Lotus\Data\", "d:\Program Files\Notes\Data\")
If (error$ != "") Goto END
error = ModifyFile("file path","source value","destination value")
file path : chemin du fichier à modifier.
source value : valeur à rechercher dans le fichier (ascii ou hexa ascii)
destination value : valeur de remplacement (ascii ou hexa ascii, de même longueur que la valeur source)
error : "" si la modification a réussi, message d'erreur sinon.
Modifie le contenu d'un fichier binaire existant en recherchant une valeur pour la remplacer par une autre.
Exemple :
error$ = ModifyFile("notes_data_folder$\Names.nsf","0xC1257504004A93B2","0xC12572DE0038A8F8")
If (error$ != "") Goto END
error = AddLineFile("file path","text","insert date")
file path : Chemin du fichier.
text : texte à écrire.
insert date : "1" pour ajouter la date au début du texte.
error : "" si l'écriture à réussi, mesage d'erreur sinon.
Ajoute une ligne de texte à la fin d'un fichier, avec ou sans la date.
Exemple :
error$ = AddLineFile("c:\Temp\DskUpdStatus.txt","--- Begin of Process ---","1")
product_version = GetProductVersion("file path")
file path: Chemin du fichier. si le chemin ne contient que le nom de l'exe (ex : "notes.exe"), le chemin complet est recherché dans la base de Registre.
product_version: numéro de version du produit, "" en cas d'erreur (ex : fichier non existant, information sur le numéro de version non disponible...).
Récupère le numéro de version d'un fichier.
Exemple :
product_version$ = GetProductVersion("notes_program_folder$\Notes.exe")
If (product_version$ = "") Goto END
file_size = GetFileSize("file path")
file path : chemin du fichier.
file_size : taille du fichier, "" en cas d'erreur (fichier inexistant...).
Détermine la taille (en octet) d'un fichier.
Exemple :
nab_size$ = GetFileSize("notes_data_folder$\Names.nsf")
If (nab_size$ = "") Goto END
line_count = GetFileLineNumber("file path")
file path : chemin du fichier.
line_count : nombre de ligne du fichier, 0 en cas d'erreur (fichier inexistant...).
Détermine le nombre de lignes d'un fichier texte.
Exemple :
line_count$ = GetFileLineNumber("notes_data_folder$\notes.ini")
If (line_count$ = 0) Goto END
line = GetFileNthLine("file path","line number")
file path : chemin du fichier.
line number : numéro de la ligne à récupérer (1 = 1ère ligne, 2=2ème ligne, ..., -1 = dernière ligne)
line : ligne du fichier texte, "" en cas d'erreur (fichier inexistant...).
Récupère la énième ligne d'un fichier texte.
Exemple :
line$ = GetFileNthLine("notes_data_folder$\notes.ini","1")
modification_date = GetFileLastModifDate("file path")
file path : chemin du fichier.
modification_date : date de dernière modification du fichier, "" en cas d'erreur (fichier inexistant...).
Détermine la date de dernière modification d'un fichier, sous la forme YYYYMMDDHHMMSS.
Exemple :
nab_modif_date$ = GetFileLastModifDate("notes_data_folder$\Names.nsf")
If (nab_modif_date$ = "") Goto END
checksum = GetFileChecksum("file path","length_kb")
file path: chemin du fichier
length_kb: longueur du fichier (en kb) utilisée pour calculer le checksum. "0" pour calculer le checksum sur toute la longueur du fichier.
checksum_value: valeur du checksum. "" en cas d'erreur (ex : fichier non existant)
Calcule le checksum d'un fichier. Vous pouvez choisir la longueur du fichier (en kb) utilisée pour le calcul du checksum.
Exemple :
checksum$ = GetFileChecksum("c:\Temp\DskMgrStart.nsf","1") => E53B7D1A
If (checksum$ = "") Goto END
result = IsFileExist("file path")
file path : chemin du fichier.
result : "1" si le fichier existe, "0" sinon.
Détermine si un fichier est présent sur le disque.
Exemple :
notes_ini$ = IsFileExist("notes_data_folder$\Notes.ini")
If (notes_ini$ = "0") Goto END
file_list = SearchMultiFile ("src_folder_path", "search_list", "exclusion_list", "recursive")
src_folder_path : Chemin du répertoire Source où rechercher les fichiers.
search_list : Liste des fichiers ou des dossiers à rechercher (l'utilisation du caractère joker '*' est autorisée). Le séparateur multi-valeurs est la virgule.
exclusion_list : Liste des fichiers ou des dossiers à NE PAS rechercher (l'utilisation du caractère joker '*' est autorisée). Le séparateur multi-valeurs est la virgule.
recursive : "1" si la recherche des fichiers se fait dans les sous-répertoires du répertoire Source.
Recherche un ensemble de fichiers présents sur le poste de l'utilisateur. La fonction renvoie les chemins des fichiers sous la frorme d'une chaine de caractères en utilisant le caractère | comme séparateur. La taille maximale des données renvoyées est de 30 KB.
Exemple :
file_list$ = SearchMultiFile("notes_data_folder$","*.dic,*.ndk,*.dsk","*\Cache.ndk,*\Cache.dsk","1")
=> "c:\Notes\Data\us.dic|c:\Notes\Data\uk.dic|c:\Notes\Data\Desktop6.ndk"
If (file_list$ = "") Goto END
file_count$ = GetElementNumber("file_list$","|")
short_path = GetShortPath("file path")
file path : chemin du fichier.
short_path : chemin court du fichier.
Récupère le chemin court (format dos 8.3) d'un fichier présent sur le disque.
Exemple :
short_path$ = GetShortPath("c:\Program Files\Lotus\Notes\Data\Notes.ini")
long_path = GetLongPath("file path")
file path : chemin du fichier.
long_path : chemin long du fichier.
Récupère le chemin long (sans les ~) d'un fichier présent sur le disque.
Exemple :
long_path$ = GetLongPath("C:\DOCUME~1\UserName\LOCALS~1\Temp\Notes.ini")
error = MountVolume("volume path","mount point path")
volume path : chemin du dossier ou du disque à monter.
mount point path : chemin du point de montage à créer.
error : "" si la création a réussi, message d'erreur sinon.
Crée un point de montage pour un volume.
Exemple :
error$ = MountVolume("e:\Backup\Date_200812\","u:\Backup\")
If (error$ != "") Goto END
error = CreateShortcut("shortcut path","source file path","arguments","working directory","description")
shortcut path : chemin du nouveau fichier raccourci à créer.
source file path : chemin du fichier vers lequel le raccourci va pointer
arguments : arguments du raccourci
working directory : répertoire de travail du raccourci
description : description du raccourci
error : "" si la création a réussi, message d'erreur sinon.
Crée un raccourci vers un fichier ou en exécutable.
Exemple :
error$ = CreateShortcut("c:\Temp\Notes.lnk", "c:\Lotus\Notes\Notes.exe", "=d:\notes\data\notes.ini DskMgrStart.nsf", "c:\Lotus\Notes", "")
Fonctions de gestion de répertoires |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| CreateFolder | Crée un nouveau dossier sur le disque. | |
||||||
| DeleteFolder | Supprime un dossier du disque et son contenu. | |
||||||
| GetCurrentFolder | Récupère le chemin du dossier courant. | |
||||||
| SetCurrentFolder | Déclare un dossier comme dossier courant. | |
||||||
| IsFolderExist | Détermine si un dossier existe sur le disque. | |
error = CreateFolder("new folder path")
new folder path : chemin du dossier à créer.
error : "" si la création a réussi, message d'erreur sinon.
Crée un répertoire sur le disque.
Exemple :
error$ = CreateFolder("u:\backup\today_date$\")
If (error$ != "") Goto END
error = DeleteFolder("folder path","empty content flag")
folder path : chemin du dossier à supprimer.
empty content flag : "" pour ne pas supprimer les fichiers présents dans le répertoire, "Y", "YES" ou "1" pour vider d'abord le répertoire avant de le supprimer.
result : "" si la création a réussi, message d'erreur sinon.
Supprime un répertoire du disque (uniquement s'il est vide). Vide son contenu auparavant si besoin.
Exemple :
error$ = DeleteFolder("u:\backup\","Yes")
If (error$ != "") Goto END
current_folder = GetCurrentFolder()
current_folder : chemin du dossier actuel.
Récupère le chemin du dossier courrant.
Exemple :
current_folder_path$ = GetCurrentFolder() => "C:\Temp\"
result = SetCurrentFolder("folder path")
folder path : chemin du dossier.
Définit le chemin du dossier courant.
Exemple :
SetCurrentFolder("C:\Temp\")
result = IsFolderExist("folder path")
folder path : chemin du dossier.
result : "1" si le fichier existe, "0" sinon.
Détermine si un dossier est présent sur le disque.
Exemple :
result$ = IsFolderExist("u:\backup\today_date$\")
If (result$ = "0") Goto CREATE_FOLDER
Fonctions de gestion des variables d'environnement ou de fichiers |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| ExpandString | Remplace les valeurs des variables d'environnement dans une chaîne. | |
||||||
| GetEnvironmentVar | Récupère la valeur d'une variable d'environnement. | |
||||||
| SetEnvironmentVar | Crée ou modifie la valeur d'une variable d'environnement. | |
||||||
| GetRegistryKey | Récupère la valeur d'une clé de Registre. | |
||||||
| GetRegistryNthKey | Retour le énième sous dossier d'un sous dossier de Registre. | |
||||||
| SetRegistryKey | Crée ou modifie la valeur d'une clé de registre. | |
||||||
| DeleteRegistryKey | Supprime une clé de registre. | |
||||||
| GetFilePrefVar | Récupère la valeur d'une variable d'un fichier de Préférence. | |
||||||
| SetFilePrefVar | Crée ou modifie la valeur d'une variable d'un fichier de Préférence. | |
||||||
| GetNotesIniVar | Récupère la valeur d'une variable du fichier Notes.ini. | |||||||
| SetNotesIniVar | Crée ou modifie la valeur d'une variable du fichier Notes.ini. | |||||||
| GetNotesKeyword | Récupère le chemin d'un répertoire ou d'un fichier de configuration Notes. |
value = ExpandString("string")
string : chaine de caractère pouvant contenir des variables d'environnement (%variable%)
value : valeur de la chaine, avec les substitutions effectuées.
Construit une chaîne de caractère en remplaçant les variables d'environnement par leur valeur.
Exemple :
full_exe_path$ = ExpandString("%ProgramFiles%\Desktop Manager\DskMgr.exe")
value = GetEnvironmentVar("variable name")
variable name : nom de la variable dont on souhaite récupérer la valeur
value : valeur de la variable, "" si la variable n'existe pas
Récupère la valeur d'une variable d'environnement.
Exemple :
temp_folder_path$ = GetEnvironmentVar("TEMP")
If (temp_folder_path$ = "") Goto END
error = SetEnvironmentVar("variable name","new value")
variable name : nom de la variable dont on souhaite récupérer la valeur
new value : nouvelle valeur de la variable
error : "" si la modification s'est bien passé, message d'erreur sinon
Modifie la valeur d'une variable d'environnement.
Exemple :
error$ = SetEnvironmentVar("BACKUP_FOLDER",backup_folder_path$)
key_value = GetRegistryKey("root","sub key","key name")
root : HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE ou HKEY_USERS
sub key : chemin de la clé
key name : nom de la clé
key_value : valeur de la clé de registre, "" si la clé n'existe pas
Récupère la valeur d'une clé de registre.
Exemple :
notes_data_path$ = GetRegistryKey("HKEY_LOCAL_MACHINE","SOFTWARE\Lotus\Notes\7.0","DataPath")
If (notes_data_path$ = "") Goto END
sub_folder = GetRegistryNthKey("root","folder key","number")
root : HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE ou HKEY_USERS
folder key : Nom du dossier du Registre
number : Numéro du Nième sous du dossier du Registre.
sub_folder : Nom du sous dossier du registre
Retour le nom du Nième sous dossier du Registre présent dans le dossier du Registre spécifié.
Exemple :
For counter$ = 1 To 1000
notes_data_path$ = GetRegistryNthKey("HKEY_LOCAL_MACHINE","SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", "counter$")
MessageBox("Windows Uninstall softaware key","notes_data_path$","OK")
NEXT
error = SetRegistryKey("root","sub key","key name","key type","new value")
root : HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE ou HKEY_USERS
sub key : chemin de la clé
key name : nom de la clé
key type : type de la clé
REG_SZ : Chaîne de caractères
REG_EXPAND_SZ : Chaîne de caractères contenant des variables d'environnement Windows (%USERPROFILE).
REG_DWORD : Nombre entier (à saisir en décimal)
new value : nouvelle valeur de la clé de registre, "" si la clé n'existe pas
error : "" si la modification s'est bien passé, message d'erreur sinon
Modifie la valeur d'une clé de registre ou crée une nouvelle clé.
Exemple :
error$ = SetRegistryKey("HKEY_CURRENT_USER", "Software\Microsoft\Windows\CurrentVersion\RunOnce", "Init", "REG_SZ", "d:\Lotus\Notes\Data\DM\DskMgr.exe")
If (error$ != "") Goto END
error = DeleteRegistryKey("root","sub key","key name")
root : HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE ou HKEY_USERS
sub key : chemin de la clé
key name : nom de la clé. Peut être vide si on veut supprimer la clé et non la valeur.
error : "" si la suppression s'est bien passé, message d'erreur sinon
Supprime une clé de registre ou une valeur de la base de registre.
Exemple :
error$ = DeleteRegistryKey("HKEY_CURRENT_USER","Software\Lotus\Notes\Installer","DirectoryKey")
If (error$ != "") Goto END
value = GetFilePrefVar("pref file path","variable name")
pref file path : chemin du fichier de préférence.
variable name : nom de la variable dont on souhaite récupérer la valeur
value : valeur de la variable, "" si la variable n'existe pas
Récupère la valeur d'une variable d'un fichier Préférence (fichier texte organisé avec des lignes 'variable=valeur', comme le Notes.ini).
Exemple :
pref_path$ = GetFilePrefVar("c:\Temp\setup.ini","PATH")
error = SetFilePrefVar("pref file path","variable name","new_value")
pref file path : chemin du fichier préférence.
variable name : nom de la variable dont on souhaite récupérer la valeur
new value : nouvelle valeur de la variable
error : "" si la modification s'est bien passé, message d'erreur sinon
Modifie la valeur d'une variable d'un fichier Préférence (fichier texte organisé avec des lignes 'variable=valeur', comme le Notes.ini).
Exemple :
error$ = SetFilePrefVar("c:\Temp\setup.ini","PATH",pref_path$)
value = GetNotesIniVar("variable name")
variable name : nom de la variable dont on souhaite récupérer la valeur
value : valeur de la variable, "" si la variable n'existe pas
Récupère la valeur d'une variable du fichier Notes.ini.
Exemple :
notes_data_path$ = GetNotesIniVar("DIRECTORY")
error = SetNotesIniVar("variable name","new value")
variable name : nom de la variable dont on souhaite récupérer la valeur
new value : nouvelle valeur de la variable
error : "" si la modification s'est bien passé, message d'erreur sinon
Modifie la valeur d'une variable du fichier Notes.ini.
Exemple :
error$ = SetNotesIniVar("DIRECTORY",notes_data_path$)
value = GetNotesKeyword("keyword name")
keyword name : nom du keyword dont on souhaite récupérer la valeur (@UserIdPath, @UserIdName, @CachePath, @CacheName, @DesktopPath, @DesktopName, @NotesIniPath. @NotesDataFolder, @NotesProgramFolder ou @NotesExePath)
value : valeur du keyword
Récupère le chemin d'un répertoire ou d'un fichier de configuration Notes.
Exemple :
notes_program_path$ = GetNotesKeyword("@NotesProgramFolder")
Fonctions de gestion d'exécutables |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| KillProcess | Arrête l'exécution d'un processus. | |
||||||
| RunSequenceProgram | Exécute un programme, en attendant qu'il se termine. | |
||||||
| RunDetachProgram | Exécute un programme, sans attendre qu'il se termine. | |
||||||
| SendKeyboardEvent | Envoie une séquence clavier en direction d'une fenêtre. | |
error = RunSequenceProgram("executable file path","parameters list")
executable file path : chemin du fichier à exécuter
parameters list : paramètres de l'exécutable
error : "" si le lancement s'est bien passé, message d'erreur sinon
Lance l'exécution d'un programme, en attendant sa terminaison pour continuer le Script.
Exemple :
error$ = RunSequenceProgram("d:\Tools\FtpFile.exe","192.168.12.25 Admin Password Log.txt")
error = RunDetachProgram("executable file path","parameters list")
executable file path : chemin du fichier à exécuter
parameters list : paramètres de l'exécutable
error : "" si le lancement s'est bien passé, message d'erreur sinon
Lance l'exécution d'un programme, sans attendre sa terminaison pour continuer le Script.
Exemple :
error$ = RunDetachProgram("d:\Tools\FtpFile.exe","192.168.12.25 Admin Password Log.txt")
error = KillProcess("process name")
process name : Nom du processus à arrêter (juste le nom de l'exécutable, pas son chemin complet).
error: "" si le processus a été arrêté avec succès, un message d'erreur sinon.
Arrête tous les processus portant ce nom.
Exemple :
error$ = KillProcess("iexplorer.exe")
error = SendKeyboardEvent("window name","key1","key2")
window name : Nom de la fenêtre de l'application. "" si on veut envoyer la séquence à l'application en cours.
key1 : Touche du clavier
key2 : Touche du clavier, ou "" si on veut juste simuler 1 touche.
error : "" si l'envoi de la séquence de touche s'est bien passé, message d'erreur sinon
Envoie une séquence de touche clavier vers une application.
Exemple :
error$ = SendKeyboardEvent("Lotus Notes","Alt","F4")
Fonctions de transfert de données |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| FTPGetFile | Récupère en local un fichier présent sur un serveur FTP. | |
||||||
| FTPPutFile | Transfère un fichier sur un serveur FTP. | |
||||||
| FTPDeleteFile | Supprime un fichier d'un serveur FTP. | |
||||||
| FTPGetLargeFile | Télécharge un fichier de taille importante depuis un serveur FTP. | |
||||||
| GetFileByHTTP | Récupère en local un fichier ou une page HTML d'un site Web. | |
||||||
| GetLDAPEntry | Récupère les attributs d'une entrée d'un annuaire LDAP. | |
error = FTPGetFile("hostname","port","login","password","remote file path","transfer type","local file path")
hostname : adresse IP ou Hostname du serveur FTP
port : numéro de port, habituellement 21
login : nom de l'utilisateur ("" si aucun login nécessaire)
password : mot de passe ("" si aucun mot de passe nécessaire)
remote file path : chemin du fichier sur le serveur FTP
transfer type : type de transfert (0 = Binaire, 1 = Ascii)
local file path : chemin local au poste où télécharger le fichier
error : "" si la récupération du fichier s'est bien passée, message d'erreur sinon
Télécharge en local un fichier présent sur un serveur FTP.
Exemple :
error$ = FTPGetFile("188.40.122.19","21,"","","utility/sst.zip","0","c:\Temp\sst.zip")
error = FTPPutFile("local file path","hostname","port","login","password","remote file path","transfer type","target file path")
local file path : chemin local au poste du fichier à transférer
hostname : adresse IP ou Hostname du serveur FTP
port : numéro de port, habituellement 21
login : nom de l'utilisateur ("" si aucun login nécessaire)
password : mot de passe ("" si aucun mot de passe nécessaire)
remote file path : chemin du fichier sur le serveur FTP
transfer type : type de transfert (0 = Binaire, 1 = Ascii)
error : "" si le transfert s'est bien passé, message d'erreur sinon
Copie un fichier local sur un serveur FTP.
Exemple :
error$ = FTPPutFile("c:\Temp\sst.zip","188.40.122.19","21,"","","utility/sst.zip","0",)
error = FTPDeleteFile("hostname","port","login","password","remote file path")
hostname : adresse IP ou Hostname du serveur FTP
port : numéro de port, habituellement 21
login : nom de l'utilisateur ("" si aucun login nécessaire)
password : mot de passe ("" si aucun mot de passe nécessaire)
remote file path : chemin du fichier sur le serveur FTP
error: "" si le fichier a été supprimé, un message d'erreur sinon.
Supprime un fichier d'un serveur FTP.
Exemple :
error$ = FTPDeleteFile("188.40.122.19","21,"","","utility/sst.zip")
error = FTPGetLargeFile("hostname","port","login","password","remote file path","transfer type","local file path","quota")
hostname : adresse IP ou Hostname du serveur FTP
port : numéro de port, habituellement 21
login : nom de l'utilisateur ("" si aucun login nécessaire)
password : mot de passe ("" si aucun mot de passe nécessaire)
remote file path : chemin du fichier sur le serveur FTP
transfer type : type de transfert (0 = Binaire, 1 = Ascii)
local file path : chemin local au poste où télécharger le fichier
quota : volume de donnée (en MB) à transférer à chaque appel de la fonction
error : "0" si le transfert est bien terminé, "1" s'il reste encore des données à transférer, message d'erreur sinon
Télécharge en local un fichier de taille importante présent sur un serveur FTP en ne transférant de N megaoctets de données à chaque appel.
Exemple :
error$ = FTPGetLargeFile("188.40.122.19","21,"","","utility/sst.zip","0","c:\Temp\sst.zip","10")
error = GetFileByHTTP("url","port","login","password","local file path","local file path","transfer type")
url : url de la Page Web ou du fichier
port : numéro de port HTTP, habituellement 80
login : nom de l'utilisateur ("" si aucun login nécessaire)
password : mot de passe ("" si aucun mot de passe nécessaire)
local file path : chemin local au poste où télécharger la page web ou le fichier
transfer type : type de transfert (0 = Binaire, 1 = Ascii)
error : "" si le transfert est bien terminé, message d'erreur sinon
Télécharge depuis un site Web une page HTML ou un fichier.
Exemple :
error$ = GetFileByHTTP("www.cooperteam.com/pict/logo.gif","80","","","c:\Temp\logo_ct.gif","0")
error = GetLDAPEntry("hostname","port","login","password","dn","local file path")
hostname : adresse IP ou Hostname du serveur LDAP
port : numéro de port LDAP, habituellement 389
login : nom de l'utilisateur ("" si aucun login nécessaire)
password : mot de passe ("" si aucun mot de passe nécessaire)
dn : dn de l'entrée recherchée
local file path : chemin local au poste où créer le fichier texte contenant les attributs de l'entrée LDAP
error : "" si le transfert est bien terminé, message d'erreur sinon
Récupère, sous forme de fichier texte, l'ensemble des attributs d'une entrée LDAP.
Exemple :
error$ = GetLDAPEntry("directory.washington.edu","389,"","","cn=Schwartz,ou=People,o=Washington,c=US", "c:\Temp\ldap_entry.txt")
Fonctions de gestion du répertoire Backup |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| GetLatestBackupFolder | Récupère le chemin du répertoire de backup le plus récent. | |||||||
| GetRestoreFolder | Récupère le chemin du répertoire de backup qu'il faut restaurer. | |||||||
| PurgeFolder | Supprime du répertoire de Backup tous les fichiers trop anciens. |
folder_path = GetLatestBackupFolder("backup folder path")
backup folder path : chemin du répertoire de backup
folder_path : chemin du sous répertoire de backup contenant les fichiers les plus récents. "" en cas d'erreur.
Récupère le chemin du sous répertoire backup contenant les fichiers les plus récents.
Exemple :
folder_path$ = GetRestoreFolder(backup_folder_path$)
If (folder_path$ = "") Goto END
folder_path = GetRestoreFolder()
folder_path : Chemin du répertoire, "" en cas de problème ou s'il n'y a rien à restaurer.
Récupère le chemin du répertoire contenant les fichiers à restaurer.
Exemple :
folder_path$ = GetRestoreFolder()
If (folder_path$ = "") Goto END
error = PurgeFolder("backup folder path", "number of folder")
backup folder path : chemin du répertoire de backup
number of folder : Nombre de sous dossier à conserver
error : "" si la purge du répertoire s'est bien passé, message d'erreur sinon
Conserve uniquement les X sous répertoires les plus récent existant dans le répertoire backup, supprime les autres.
Exemple :
error$ = PurgeFolder(backup_folder_path$,"5")
Fonctions de gestion des chaînes de caractères |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| Left | Renvoie les premiers caractères d'une chaîne. | |||||||
| Right | Renvoie les derniers caractères d'une chaîne. | |||||||
| LeftString | Renvoie les caractères situés à gauche d'une sous chaîne. | |||||||
| RightString | Renvoie les caractères situés à droite d'une sous chaîne. | |||||||
| LeftStringBack | Renvoie les caractères situés à gauche d'une sous chaîne. | |||||||
| RightStringBack | Renvoie les caractères situés à droite d'une sous chaîne. | |||||||
| Middle | Renvoie une partie d'une chaîne de caractères. | |||||||
| InStr | Recherche le présence d'une sous chaîne dans une chaîne de caractères. | |||||||
| ReplaceSubString | Remplace les occurrences d'une sous chaîne de caractères par une autre. | |||||||
| Length | Renvoie la longueur d'une chaîne de caractères. |
length = Length("string")
string : chaîne de caractère.
length : longueur de la chaîne de caractères.
Détermine la longueur d'une chaîne de caractère.
Exemple :
length$ = Length("Notes.ini") => 9
result_string = Left("string","number")
string : chaîne de caractère source.
number : nombre de caractère à extraire.
result_string : sous chaîne résultat.
Extrait les "number" premiers caractères d'une chaîne.
Exemple :
result_string$ = Left("c:\Lotus\Notes\Data\Notes.ini","9") => "c:\Lotus\"
result_string = Right("string","number")
string : chaîne de caractère source.
number : nombre de caractère à extraire.
result_string : sous chaîne résultat.
Extrait les "number" derniers caractères d'une chaîne.
Exemple :
result_string$ = Right("c:\Lotus\Notes\Data\Notes.ini","9") => "Notes.ini"
result_string = LeftString("string","sub_string")
string : chaîne de caractère source.
sub_string : sous chaîne à rechercher.
result_string : sous chaîne résultat.
Extrait les caractères de la chaîne source situés à gauche de la sous chaîne. Renvoi "" si la sous chaîne n'est pas trouvée.
Exemple :
result_string$ = LeftString("c:\Lotus\Notes\Data\Notes.ini","Data") => "c:\Lotus\Notes\"
result_string = RightString("string","sub_string")
string : chaîne de caractère source.
sub_string : sous chaîne à rechercher.
result_string : sous chaîne résultat.
Extrait les caractères de la chaîne source situés à droite de la sous chaine. Renvoi "" si la sous chaîne n'est pas trouvée.
Exemple :
result_string$ = RightString("c:\Lotus\Notes\Data\Notes.ini","Data\") => "Notes.ini"
result_string = LeftStringBack("string","sub_string")
string : chaîne de caractère source.
sub_string : sous chaîne à rechercher.
result_string : sous chaîne résultat.
Extrait les caractères de la chaîne source situés à gauche de la sous chaîne, en parcourant la chaîne source de droite à gauche. Renvoi "" si la sous chaîne n'est pas trouvée.
Exemple :
result_string$ = LeftStringBack("c:\Lotus\Notes\Data\Notes.ini","Notes") => "c:\Lotus\Notes\Data\"
result_string = RightStringBack("string","sub_string")
string : chaine de caractère source.
sub_string : sous chaîne à rechercher.
result_string : sous chaîne résultat.
Extrait les caractères de la chaîne source situés à droite de la sous chaine, en parcourant la chaîne source de droite à gauche. Renvoi "" si la sous chaîne n'est pas trouvée.
Exemple :
result_string$ = RightStringBack("c:\Lotus\Notes\Data\Notes.ini","Notes") => ".ini"
result_string = Middle("string","start","length")
string : chaîne de caractère source.
offset : offset de démarage dans la chaine (de 1 à Length(string)).
length : longueur à extraire.
result_string : sous chaîne résultat.
Extrait les "length "caractères de la chaîne source situés à la position "offset".
Exemple :
result_string$ = Middle("c:\Lotus\Notes\Data\Notes.ini","4","11") => "Lotus\Notes"
offset = InStr("string","sub string")
string : chaîne de caractère source.
sub string : sous chaîne de caractère à rechercher.
offset : offset où la sub string a été trouvée (1 -> Length(string)). 0 si elle n 'est pas trouvée.
Renvoie la position d'une sous-chaîne de caractère dans la chaine source. Si la sous chaîne n'est pas trouvée, la fonction renvoie 0.
Exemple :
offset$ = InStr("c:\Lotus\Notes\Data\Notes.ini","Lotus") => 4
result_string = ReplaceSubString("string","search string"," replace string")
string : chaîne de caractère source.
search string : sous chaîne que l'on recherche.
replace string : sous chaîne de remplacement.
result_string : chaîne résultat.
Recherche et remplace les occurences d'une chaîne de caractère par une autre.
Exemple :
result_string$ = ReplaceSubString("c:\Lotus\Notes\Data\Notes.ini","Notes","R85") => "c:\Lotus\R85\Data\R85.ini"
Fonctions de gestion des listes d'éléments |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| GetElementNumber | Renvoie le nombre d'éléments d'une liste. | |||||||
| GetNthElement | Renvoie le énième élément d'une liste. | |||||||
| GetSubsetList | Renvoie les N premiers (ou derniers) éléments d'une liste. | |||||||
| GetElementPosition | Renvoie la position d'un élément d'une liste. | |||||||
| AddElement | Ajoute un nouvel élément à la fin d'une liste. | |||||||
| InsertElement | Insère un nouvel élément à une liste. | |||||||
| ReplaceElement | Remplace un ou plusieurs éléments par un autre dans une liste. | |||||||
| RemoveElement | Supprime un ou plusieurs éléments d'une liste. | |||||||
| UniqueList | Supprime tous éléments en double dans une liste. | |||||||
| TrimList | Supprime tous les éléments vides d'une liste. |
number = GetElementNumber("list","separator")
list : chaîne de caractères représentant la liste.
separator : caractère de séparation des élements.
number : nombre d'éléments de la liste.
Renvoie le nombre d'éléments d'une liste. Si la chaine de caractère est vide, le nombre d'éléments est 0.
Exemple :
number$ = GetElementNumber("Notes.ini,Lotus.ini,Setup.ini",",") => 3
element = GetNthElement("list","separator","position")
list : chaine de caractères représentant la liste.
separator : caractère de séparation des élements.
position : position de l'élément dans la liste (commence à 1, peut être négatif).
element : Nième élément de la liste.
Renvoie le Nième élement d'une liste (le premier élement est le 1). Si N est négatif, on compte à partir de la fin de la liste.
Exemple :
number$ = GetNthElement("Notes.ini,Lotus.ini,Setup.ini",",","2") => "Lotus.ini"
number$ = GetNthElement("Notes.ini,Lotus.ini,Setup.ini",",","-1") => "Setup.ini"
new_list = GetSubsetList("list","separator","number")
list : chaîne de caractères représentant la liste.
separator : charactère de séparation des élements.
number : nombre d'éléments à extraire de la liste (peut être négatif).
new_list : Sous liste de la liste principale.
Renvoie les N premiers élements d'une liste. Si N est négatif, on compte à partir de la fin de la liste.
Exemple :
new_list$ = GetSubsetList("Notes.ini,Lotus.ini,Setup.ini",",","2") => "Notes.ini,Lotus.ini"
new_list$ = GetSubsetList("Notes.ini,Lotus.ini,Setup.ini",",","-2") => "Lotus.ini,Setup.ini"
element = GetElementPosition("list","separator","element")
list : chaîne de caractères représentant la liste.
separator : caractère de séparation des élements.
element : élément que l'on recherche dans la liste.
position : position de l'élément dans la liste (commence à 1).
Renvoie la position d'un élément d'une liste (le premier élement est le 1). Si l'élément n'est pas trouvé, la fonction renvoie 0.
Exemple :
position$ = GetElementPosition("Notes.ini,Lotus.ini,Setup.ini",",","Lotus.ini") => 2
new_list = AddElement("list","separator","element")
list : chaîne de caractères représentant la liste.
separator : caractère de séparation des élements.
element : élément à ajouter dans la liste.
new_list : nouvelle liste.
Ajoute un élement à la fin d'une liste.
Exemple :
new_list$ = AddElement("Notes.ini,Lotus.ini,Setup.ini",",","Sametime.ini") => "Notes.ini,Lotus.ini,Setup.ini,Sametime.ini"
new_list = InsertElement("list","separator","element","position")
list : chaîne de caractères représentant la liste.
separator : caractère de séparation des élements.
element : élément à ajouter dans la liste.
position : position où insérer le nouvel élément (commence à 1, peut être négatif).
new_list : nouvelle liste.
Ajoute un élément à une position précise dans une liste (le premier élement est le 1). Si la position est négative, on compte à partir de la fin de la liste.
Exemple :
new_list$ = InsertElement("Notes.ini,Lotus.ini,Setup.ini",",","Sametime.ini","1") => "Sametime.ini,Notes.ini,Lotus.ini,Setup.ini"
new_list$ = InsertElement("Notes.ini,Lotus.ini,Setup.ini",",","Sametime.ini","-2") => "Notes.ini,Lotus.ini,Sametime.ini,Setup.ini"
new_list = ReplaceElement("list","separator","element_src","element_dst")
list : chaîne de caractères représentant la liste.
separator : caractère de séparation des élements.
element_src : élément source à rechercher dans la liste.
element_dst : élément destination de remplacement.
new_list : nouvelle liste.
Remplace dans une liste tous les éléments recherchés par un nouveau. Il est possible d'utiliser le caractère Joker * dans l'élément source.
Exemple :
new_list$ = ReplaceElement("Notes.ini,Lotus.ini,Setup.ini",",","Lotus.ini","DskMgr.ini")
=> "Notes.ini,DskMgr.ini,Setup.ini"
new_list$ = ReplaceElement("LotusNotes.ini,Lotus.ini,Setup.ini",",","Lotus*.ini","DskMgr.ini")
=> "DskMgr.ini,DskMgr.ini,Setup.ini"
new_list = RemoveElement("list","separator","element")
list : chaîne de caractères représentant la liste.
separator : caractère de séparation des élements.
element : élément à supprimer de la liste.
new_list : nouvelle liste.
Supprime de la liste les éléments indiqués. Il est possible d'utiliser le caractère Joker * dans le nom de l'élément pour en supprimer plusieurs.
Exemple :
new_list$ = RemoveElement("Notes.ini,Lotus.ini,Setup.ini",",","Lotus.ini") => "Notes.ini,Setup.ini"
new_list$ = RemoveElement("LotusNotes.ini,Lotus.ini,Setup.ini",",","Lotus*.ini") => "Setup.ini"
new_list = UniqueList("list","separator")
list : chaîne de caractères représentant la liste.
separator : caractère de séparation des élements.
new_list : nouvelle liste.
Supprime de la liste les éléments en double.
Exemple :
new_list$ = UniqueList("Notes.ini,Lotus.ini,Notes.ini",",") => "Notes.ini,Lotus.ini"
new_list = TrimList("list","separator")
list : chaîne de caractères représentant la liste.
separator : caractère de séparation des élements.
new_list : nouvelle liste.
Supprime de la liste les éléments vides.
Exemple :
new_list$ = TrimList("Notes.ini,,Lotus.ini,Setup.ini,",",") => "Notes.ini,Lotus.ini,Setup.ini"
Fonctions diverses |
|
|
| Nom de la fonction | Définition | Pre Script | Post Script | Script | ||||
| MessageBox | Affiche une MessageBox à l'utilisateur pour lui demander quelque chose. | |||||||
| Sleep | Marque une pause avant de poursuivre l'exécution du Script. | |||||||
| SetWindowTitle | Modifie le titre de la fenêtre de progression. | |||||||
| LogLine | Affiche une ligne dans le fichier de Log. | |||||||
| EvaluateAsInteger | Convertit une chaîne de caractères en nombre entier. | |||||||
| IsLaptop | Détermine si le Script s'exécute sur un portable. | |||||||
| IsRunOnVirtual | Détermine si le Script s'exécute dans une session virtuelle (Citrix...). | |||||||
| GetCurrentDate | Récupère la date actuelle. | |||||||
| GetAdjustDate | Construit une date à partir de la date actuelle et d'un décalage. | |||||||
| GetNotesVersion | Récupère la version du client Notes. | |||||||
| ExitNotes | Force la fermeture du client Notes (uniquement en Pre-Script). | |||||||
| RestartNotes | Force le redémarrage du client Notes (uniquement en Pre-Script). | |||||||
| KillNotes | Arrête l'exécution de tous les processus liés au client Notes. |
result = MessageBox("window title","message","window style")
window title : Titre de la fenêtre MessageBox
message : Message de la fenêtre
window style : Type de la fenêtre ("OK" ou "YESNO")
result : "" si OK, "Yes" ou "No" si "YESNO", en fonction du bouton sur lequel l'utilisateur a cliqué
Crée une fenêtre de type MessageBox avec des boutons OK ou Oui / Non et attend la réponse de l'utilisateur.
Exemple :
answer$ = MessageBox("Backup Notes Files","Do you want to backup the files ?","YESNO")
If (answer$ = "NO") Goto END
error = Sleep("delay")
delay : délai d'attente en centième de seconde ("100" = 1 s).
error : toujours ""
Marque une pause avant de continuer l'exécution des commandes du fichier Script.
Exemple :
Sleep("100")
error = LogLine("message")
message : message à écrire dans le fichier de Log.
error : toujours ""
Affiche un message dans le fichier de Log (placé dans le répertoire Temp). Permet de debugger efficacement les Script.
Exemple :
LogLine("--- Copy user files ---")
result = EvaluateAsInteger("expression")
expression : chaine de caractères à évaluer afin de la convertir en nombre entier. La chaine peut contenir des nombres, des opérateurs, des parenthèses, des noms de variables...
result : Nombre entier si la conversion s'est bien passée, "Error" sinon
Convertit une chaine de caractères en nombre entier.
Exemple :
size_kb$ = EvaluateAsInteger("size_byte$ / 1024")
error = SetWindowTitle("message")
message : Message à afficher dans la fenêtre de progression du Script
error : toujours ""
Change le message affiché dans la fenêtre de progression du Script.
Exemple :
SetWindowTitle("Backup Notes files...")
notes_version$ = GetNotesVersion()
notes_version$ : version du client Notes, sur 3 digits ("Release 7.0.2" => "702")
Récupère la version du client Notes.
Exemple :
version$ = GetNotesVersion()
If (version$ < 850) Goto END
result = IsLaptop()
result: "1" si c'est un ordinateur portable, "0" sinon
Détermine si le Script s'exécuter sur un ordinateur portable.
Exemple :
is_laptop$ = IsLaptop()
result = IsRunOnVirtual()
result: "1" si c'est Citrix, "0" sinon
Détermine si le Script s'exécute dans un environnement virtuel (session Citrix...).
Exemple :
is_virtual$ = IsRunOnVirtual()
ExitNotes()
Force la fermeture du client Notes alors que celui-ci est entrain de démarrer (Pre-Script). L'ensemble des actions du Pre-Script sont exécutées puis le client Notes est arrêté. La fenêtre de demande du mot de passe n'est pas affichée.
Exemple :
ExitNotes()
RestartNotes()
Force le redémarrage du client Notes alors que celui-ci est entrain de démarrer (Pre-Script). L'ensemble des actions du Pre-Script sont exécutées puis le client Notes est redémarré. La fenêtre de demande du mot de passe n'est pas affichée.
Exemple :
RestartNotes()
error = KillNotes()
error: "" si les processus ont été arrêtés avec succès, un message d'erreur sinon.
Arrête tous les processus liés au client Notes.
Exemple :
error$ = KillNotes()
date = GetCurrentDate("date format")
date format : partie de la date / heure que l'on souhaite récupérer : "Year" (4 chiffres), "Month" (01-12), "Day" (01-31), "Hour" (00-23), "Minute" (00-59), "Second" (00-59) ou "Weekday" (1-7)
date : valeur de la date / heure correspondant à ce qui a été demandé
Récupère une partie de la date / heure actuelle, sous forme d'une chaine de caractères.
Exemple :
year$ = GetCurrentDate("Year")
month$ = GetCurrentDate("Month")
day$ = GetCurrentDate("Day")
backup_path$ = "backup_folder$\Date_Year$_Month$_Day$\"
date = GetAdjustDate("date format","delta year","delta month","delta day")
date format : partie de la date / heure que l'on souhaite récupérer : "Year" (4 chiffres), "Month" (01-12), "Day" (01-31), "Hour" (00-23), "Minute" (00-59), "Second" (00-59) ou "Weekday" (1-7)
delta year : nombre d'année à ajouter ou enlever à la date courrante
delta month : nombre de mois à ajouter ou enlever à la date courrante
delta day : nombre de jours à ajouter ou enlever à la date courrante
date : valeur de la date / heure correspondant à ce qui a été demandé
Récupère une partie de la date / heure actuelle et la modifie en ajoutant ou retranchant une durée.
Exemple :
last_month$ = GetCurrentDate("Month","0","-1","0")
3. Exemple de Script |
|
|
Le script suivant va effectuer une sauvegarde de certains des fichiers de configuration Notes de l'utilisateur. Il commence donc par récupérer le chemin du répertoire backup de l'utilisateur (mot clé @BackupFolder), lui demande l'autorisation de sauvegarder ses fichiers et si l'utilisateur répond positivement, il y copiera les fichiers dans un répertoire contenant la date du jour dans son nom. A la fin de l'exéction, il va purger le répertoire backup pour ne conserver que les 5 dernières sauvegardes.
- Fichier tel qu'il est écrit dans le document Tâche ou Profile, avec les mot clés @ :
### Don't do anything if there is no Backup Folder
notes_data_path$= "@NotesDataFolder"
backup_folder$ = "@BackupFolder"
If (backup_folder$ = "") Goto END
## Ask the User
answer$ = MessageBox("Backup Notes Files","Do you want to backup the files ?")
If (answer$ = "NO") Goto END
error$ = SetWindowTitle("Backup Notes Files...")
## Prepare the path of the sub-folder 'Date_YYYY_MM_DD'
year$ = GetCurrentDate("Year")
month$ = GetCurrentDate("Month")
day$ = GetCurrentDate("Day")
backup_sub_folder$ = "backup_folder$\Date_year$_month$_day$\"
## Copy the files into the new sub-Folder
error$ = CopyFile("notes_data_path$\Names.nsf","backup_sub_folder$\Names.nsf")
error$ = CopyFile("notes_data_path$\Bookmark.nsf","backup_sub_folder$\Bookmark.nsf")
error$ = CopyFile("notes_data_path$\Notes.ini","backup_sub_folder$\Notes.ini")
error$ = CopyFile("notes_data_path$\@DesktopName","backup_sub_folder$\@DesktopName")
## Keep the lastest 5 Backup sub-folders
error$ = PurgeFolder("backup_folder$","5")
### End of Script
END:
- Fichier tel qu'il est écrit sur disque de l'utilisateur, avec les mot clés remplacés :
### Don't do anything if there is no Backup Folder
notes_data_path$= "d:\notes\data\"
backup_folder$ = "u:\user\notes\backup\"
If (backup_folder$ = "") Goto END
## Ask the User
answer$ = MessageBox("Backup Notes Files","Do you want to backup the files ?","YESNO")
If (answer$ = "NO") Goto END
error$ = SetWindowTitle("Backup Notes Files...")
## Prepare the path of the sub-folder 'Date_YYYY_MM_DD'
year$ = GetCurrentDate("Year")
month$ = GetCurrentDate("Month")
day$ = GetCurrentDate("Day")
backup_sub_folder$ = "backup_folder$\Date_year$_month$_day$\"
## Copy the files into the new sub-Folder
error$ = CopyFile("notes_data_path$\Names.nsf","backup_sub_folder$\Names.nsf")
error$ = CopyFile("notes_data_path$\Bookmark.nsf","backup_sub_folder$\Bookmark.nsf")
error$ = CopyFile("notes_data_path$\Notes.ini","backup_sub_folder$\Notes.ini")
error$ = CopyFile("notes_data_path$\Desktop6.ndk","backup_sub_folder$\Desktop6.ndk")
## Keep the lastest 5 Backup sub-folders
error$ = PurgeFolder("backup_folder$","5")
### End of Script
END:

Back to Top
Commentaires
0 commentaire
Cet article n'accepte pas de commentaires.