Comment lire un fichier (texte ou binaire) à partir d'un fichier batch? Il y a un moyen de le lire en mode binaire ou en mode texte?Fichiers batch: comment lire un fichier?
Répondre
Vous pouvez utiliser la commande pour:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
Type de
for /?
à l'invite de commande. En outre, vous pouvez parse ini files!
Ceci est un exemple assez complexe, analysant des informations très spécifiques à partir d'un fichier texte particulièrement formaté, sans donner d'explication. Selon 'pour /?' La commande * analyserait chaque ligne dans monfichier.txt, ignorant les lignes qui commencent par un point-virgule, passant le deuxième et le troisième jeton de chaque ligne au corps, avec des jetons délimités par des virgules et/ou des espaces . * –
Sous cmd.exe style NT, vous pouvez boucler à travers les lignes d'un fichier texte avec
FOR /F %i IN (file.txt) DO @echo %i
Tapez « l'aide » à l'invite de commande pour plus d'informations. (Ne sais pas si cela fonctionne dans tout ce "DOS" vous utilisez)
Cela devrait être '%% i'. –
Cette commande quitterait la lecture d'une ligne si elle trouvait un caractère d'espace. J'ai finalement fini par utiliser FOR/F "tokens = *" %% i IN (fichier.txt) DO @ECHO %% i – Jason
Cela fonctionne! et Si vous utilisez la console, essayez% i si vous utilisez un fichier bat puis essayez %% 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 de plus de ~ 8190 sont problématiques. L'expansion fonctionne seulement fiable, si l'expansion retardée est désactivée.
La détection de CR/LF versus simple LF semble également un peu compliquée.
Les caractères NUL sont également problématiques, car une boucle FOR annule immédiatement la lecture.
Direct La lecture binaire semble donc presque impossible.
Le problème avec les lignes vides peut être résolu avec une astuce. Préfixe chaque ligne avec un numéro de ligne, en utilisant la commande findstr, et après la lecture, supprime le préfixe.
@echo off
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ t.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
echo(!var!
ENDLOCAL
)
Basculement entre activer et désactivé l'expansion retardée neccessaire pour le coffre-fort de travailler avec des chaînes, comme !
ou ^^^xy!z
.
C'est parce que la ligne set "var=%%a"
n'est sûre 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 un call %%var%%
échouera avec un contenu tel que "&"&
.
EDIT: Ajout défini/variante p
Il y a 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 supprime les caractères de contrôle à la fin de la ligne .
Mais l'avantage est, vous ne l'avez pas besoin du basculement retardé et il est plus facile à stocker des valeurs dans les variables
@echo off
setlocal EnableDelayedExpansion
set "file=%~1"
for /f "delims=" %%n in ('find /c /v "" %file%') do set "len=%%n"
set "len=!len:*: =!"
<%file% (
for /l %%l in (1 1 !len!) do (
set "line="
set /p "line="
echo(!line!
)
)
Pour lire « binaire » dans une représentation hexagonale
Vous pouvez regarder SO: converting a binary file to HEX representation using batch file
Merci pour le pointeur sur l'utilisation de 'set/p'. J'ai utilisé 'set/p value =
Jeb, j'ai posé une question connexe basée sur votre solution ci-dessus dans http://stackoverflow.com/questions/11408295/with-dos -batch-file-comment-analyser-un-fichier-et-sortir-partie-vers-un-fichier-partie-vers-un – Nicholas
Qu'en est-il du caractère EOF (fin de fichier), ASCII '0x1A' ? est-ce que 'for/F' se comporte de la même manière qu'avec les caractères NUL (' 0x00')? – aschipfl
si vous voulez juste pour l'afficher sur cmd, vous pouvez utiliser ceci:
cat myfile.txt
'cat' n'est pas une commande Windows , vous devriez utiliser 'type' pour ça. –
bien al theres ot de différentes façons, mais si vous voulez seulement afficher le texte et entreposez pas partout, vous utilisez juste: findstr /v "randomtextthatnoonewilluse" filename.txt
Un moyen très facile de le faire est d'utiliser la commande suivante:
set /p mytextfile=< %pathtotextfile%\textfile.txt
echo %mytextfile%
Cette volonté affiche uniquement la première ligne de texte dans un fichier texte. L'autre façon, vous pouvez le faire est d'utiliser la commande suivante:
type %pathtotextfile%\textfile.txt
Cela mettra toutes les données dans le fichier texte à l'écran. J'espère que cela t'aides!
- 1. Comment puis-je comparer deux fichiers dans un fichier batch?
- 2. Lire des fichiers dans un fichier JAR
- 3. comment lire un fichier
- 4. Nombre de fichiers supprimés du fichier batch
- 5. Comment appeler un fichier batch à partir d'un fichier MSI
- 6. Comment exécuter un fichier batch par javascript
- 7. Comment fonctionne un fichier batch Microsoft?
- 8. Lire un fichier texte ligne par ligne dans un script batch ou VBS?
- 9. Fichiers batch, $: et ~
- 10. Comment lire un fichier pim.vol
- 11. Comment fermer la fenêtre de commande d'un fichier batch démarré par un autre fichier batch
- 12. DFC lire un fichier
- 13. Fichier batch interactif
- 14. Comment copier des fichiers avec Windows Batch?
- 15. Comment exécuter un fichier batch sur un ordinateur distant?
- 16. Comment renommer des fichiers existants en utilisant un fichier batch à des fins de sauvegarde?
- 17. Comment lire un fichier et écrire dans un fichier texte?
- 18. Fichier Autorun et Batch Usb
- 19. Manipuler le temps dans un fichier batch
- 20. Comment lire un fichier csv avec python
- 21. Comment lire un fichier wav dans Delphi?
- 22. Lire plusieurs fichiers texte dans un dossier
- 23. Comment lire et écrire plusieurs fichiers?
- 24. fichiers batch: obtenir une valeur de chaîne
- 25. Comment implémenter quicksort en utilisant un fichier batch?
- 26. Comment exécuter un fichier batch à partir de Java?
- 27. Comment obtenir l'équivalent de dirname() dans un fichier batch?
- 28. comment écrire un fichier batch pour formater Excel?
- 29. comment pouvons-nous utiliser un fichier batch en C++?
- 30. Comment un fichier batch peut-il localiser l'emplacement?
@ RookieTEC9: oui, je sais que ce sont 2 choses complètement différentes, mais j'avais besoin d'une réponse qui a fonctionné dans msdos, pas windows nt (ou versions plus récentes), aussi cette question a été posée il y a 7 ans –
@ RookieTEC9: Je pense que vous avez raison, cela fait un moment que cela. Je vais juste enlever la balise ms-dos –
Vous pouvez utiliser la commande 'TYPE [fileName]' pour MS-Dos. – RookieTEC9