@FILEOPEN[filename,r[ead]|w[rite]|a[ppend][,b|t]]: ouvre le fichier dans le mode spécifié et renvoie le handle du fichier sous la forme d'un entier. Le troisième paramètre facultatif détermine si le fichier est ouvert en mode binaire ou en mode texte. Lemode texte (par défaut) doit être utilisé pour lire du texte à l'aide de @FILEREAD sans longueur, et pour écrire du texte à l'aide de @FILEWRITE. Le mode binaire doit être utilisé pour lire des données binaires avec @FILEREAD avec une longueur, et pour écrire des données binaires avec @FILEWRITEB. Retourne -1 si le fichier ne peut pas être ouvert.
Le nom du fichier doit être entre guillemets s'il contient des espaces blancs ou des caractères spéciaux. Pour lire à partir de l'entrée standard, utilisez CON : pour le nom de fichier.
Pour ouvrir un fichier à la fois en lecture et en écriture, ouvrez-le enmode append , puis utilisez @FILESEEK pour vous positionner au début du fichier (ou à tout autre endroit souhaité) avant d'effectuer d'autres opérations.
@FILEOPEN peut également ouvrir des tuyaux nommés. Le nom du tube doit commencer par\\Pipe\. @FILEOPEN essaie d'abord d'ouvrir un tube existant ; en cas d'échec, il essaie de créer un nouveau tube. Les tuyaux sont ouverts en mode bloquant, en accès duplex, en mode lecture d'octets et sont héritables. @FILEOPEN ne revient pas tant qu'un autre processus ne s'est pas connecté au tube. Pour plus d'informations sur les tuyaux nommés, consultez votre documentation Windows.
@FILEOPEN peut ouvrir des flux de fichiers sur des lecteurs NTFS si le nom du flux est spécifié. Voir Flux de fichiers NTFS pour plus de détails sur les flux de fichiers.
Vous devez référencer le fichier exclusivement à l'aide de la poignée de fichier renvoyée, et vous devez fermer le fichier à l'aide de la poignée de fichier. Ceci est particulièrement important lorsque vous déboguez un programme batch qui utilise @FILEOPEN. Si vous soupçonnez que des handles de fichiers ont été ouverts et non fermés, vous devez redémarrer TCC.
Exemples :
set h=%@fileopen["d:\path\myfile.txt",write]
echo writing %@filewrite[%h,this is a test] bytes
echo closing handle #%h: %@fileclose[%h]
Voir également les fonctions connexes basées sur les handles :
| @FILECLOSE | Fermer un handle de fichier |
| @FILEREAD | Lire la ligne suivante à partir d'un handle de fichier |
| @FILESEEK | Déplacer un pointeur de fichier |
| @FILESEEKL | Déplacer un pointeur de fichier sur une ligne spécifiée |
| @FILEWRITE | Écriture de la ligne suivante dans une poignée de fichier |
| @FILEWRITEB | Écriture de données dans un gestionnaire de fichier |
| @TRUNCATE | Tronquer le fichier à la position actuelle du pointeur de fichier. |