Comment lire un fichier (texte ou binaire) à partir d'un fichier batch? Il existe un moyen de le lire en mode binaire ou en mode texte?
file
batch-file
Lucas Gabriel Sánchez
la source
la source
TYPE [fileName]
pour MS-Dos.Réponses:
Vous pouvez utiliser la commande for:
Type
à l'invite de commande. En outre, vous pouvez analyser les fichiers ini !
la source
for /?
la commande , analyser chaque ligne de myfile.txt, en ignorant les lignes commençant par un point-virgule, en passant le 2ème et le 3ème jeton de chaque ligne au corps for, avec des jetons délimités par des virgules et / ou des espaces.Sous cmd.exe de style NT, vous pouvez parcourir les lignes d'un fichier texte avec
Tapez «help for» sur l'invite de commande pour plus d'informations. (je ne sais pas si cela fonctionne sous n'importe quel "DOS" que vous utilisez)
la source
%%i
.Le FOR-LOOP fonctionne généralement, mais il y a quelques problèmes. Le FOR n'accepte pas les lignes vides et les lignes avec plus de ~ 8190 sont problématiques. L'expansion ne fonctionne de manière fiable que si l'expansion retardée est désactivée.
La détection de CR / LF par rapport à une seule LF semble également un peu compliquée.
Les caractères NUL sont également problématiques, car une boucle FOR annule immédiatement la lecture.
La lecture binaire directe semble donc presque impossible.
Le problème des lignes vides peut être résolu avec une astuce. Préfixez chaque ligne avec un numéro de ligne, à l'aide de la commande findstr, et après la lecture, supprimez le préfixe.
Le basculement entre l'expansion retardée activée et désactivée est nécessaire pour travailler en toute sécurité avec des chaînes, comme
!
ou^^^xy!z
.C'est parce que la ligne
set "var=%%a"
n'est sécurisée qu'avec DisabledDelayedExpansion , sinon les points d'exclamation sont supprimés et les carets sont utilisés comme caractères d'échappement (secondaires) et ils sont également supprimés.Mais l'utilisation de la variable
var
n'est sûre qu'avec EnabledDelayedExpansion , car même uncall %%var%%
échouera avec un contenu comme"&"&
.EDIT: Ajout de la variante set / p
Il existe une deuxième façon de lire un fichier avec
set /p
, les seuls inconvénients sont qu'il est limité à ~ 1024 caractères par ligne et qu'il supprime les caractères de contrôle à la fin de la ligne.Mais l'avantage est que vous n'avez pas besoin du basculement différé et qu'il est plus facile de stocker des valeurs dans des variables
Pour le lire "binaire" en une représentation hexadécimale
Vous pouvez regarder SO: convertir un fichier binaire en représentation HEX en utilisant un fichier batch
la source
set /p
. J'avais l'habitude d'set /p value=< result.txt
obtenir la première ligne d'un fichier texte0x1A
? nefor /F
se comportent de la même manière que NUL (0x00
personnages)?:
ou;
ou contiennent!
Un moyen très simple de le faire est d'utiliser la commande suivante:
Cela n'affichera que la première ligne de texte dans un fichier texte. L'autre façon de le faire est d'utiliser la commande suivante:
Cela mettra toutes les données dans le fichier texte à l'écran. J'espère que cela t'aides!
la source
Eh bien, il existe de nombreuses façons différentes, mais si vous voulez seulement AFFICHER le texte et ne pas le STOCKER n'importe où, utilisez simplement:
findstr /v "randomtextthatnoonewilluse" filename.txt
la source
Code corrigé:
la source
eol=
etdelims=
sont superflus,set line=%%a
devraient utiliser des guillemets et sans basculer le mode d'expansion différée, le code ne peut pas lire les points d'exclamationUn code qui affiche le contenu du fichier myfile.txt à l'écran
set% filecontent% = 0
type% filename% >>% filecontent%
echo% filecontent%
la source