Je veux récupérer une ligne entière d'un fichier espaces compris
Fermé
TABTOB81
Messages postés
2
Date d'inscription
jeudi 7 mai 2015
Statut
Membre
Dernière intervention
7 mai 2015
-
Modifié par baladur13 le 7/05/2015 à 13:36
jogadyl Messages postés 14 Date d'inscription dimanche 3 mai 2015 Statut Membre Dernière intervention 17 mai 2015 - 7 mai 2015 à 18:22
jogadyl Messages postés 14 Date d'inscription dimanche 3 mai 2015 Statut Membre Dernière intervention 17 mai 2015 - 7 mai 2015 à 18:22
A voir également:
- Je veux récupérer une ligne entière d'un fichier espaces compris
- Fichier rar - Guide
- Comment récupérer un compte facebook piraté - Guide
- Fichier host - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
TABTOB81
Messages postés
2
Date d'inscription
jeudi 7 mai 2015
Statut
Membre
Dernière intervention
7 mai 2015
7 mai 2015 à 16:42
7 mai 2015 à 16:42
il faut ajouter la ligne suivante au début du programme :
@Echo off & Setlocal enableextensions enabledelayedexpansion
@Echo off & Setlocal enableextensions enabledelayedexpansion
jogadyl
Messages postés
14
Date d'inscription
dimanche 3 mai 2015
Statut
Membre
Dernière intervention
17 mai 2015
7 mai 2015 à 17:03
7 mai 2015 à 17:03
Le problème c'est le %1 dans ton sous-programme.
Comme ta ligne de commande comporte des blancs, %1 ne représente que le premier mot.
Si tu veux récupérer la ligne entière dans :cmd, il faut rechercher tous les paramètres.
Plutôt que d'utiliser la suite %1 %2 %3 %4 etc.. tu peux utiliser la variable %* qui prend toute la ligne
Ton programme devient
Note que le premier test sur %1 est correct. Tu sortiras de la procedure s'il n'y a pas de paramètre, même si la ligne de ton fichier comporte des blancs.
Pour ce programme, la ligne
Setlocal enableextensions enabledelayedexpansion
ne sert à rien. (Mais ça ne peux pas faire de mal)
Comme ta ligne de commande comporte des blancs, %1 ne représente que le premier mot.
Si tu veux récupérer la ligne entière dans :cmd, il faut rechercher tous les paramètres.
Plutôt que d'utiliser la suite %1 %2 %3 %4 etc.. tu peux utiliser la variable %* qui prend toute la ligne
Ton programme devient
@echo off
for /F "delims=" %%R in (MonFichier) do ( call :cmd %%R)
pause
goto :eof
:cmd
if "%1" == "" exit
SET var=%*
echo %var:~28,4%
echo %*
Note que le premier test sur %1 est correct. Tu sortiras de la procedure s'il n'y a pas de paramètre, même si la ligne de ton fichier comporte des blancs.
Pour ce programme, la ligne
Setlocal enableextensions enabledelayedexpansion
ne sert à rien. (Mais ça ne peux pas faire de mal)
jogadyl
Messages postés
14
Date d'inscription
dimanche 3 mai 2015
Statut
Membre
Dernière intervention
17 mai 2015
7 mai 2015 à 18:22
7 mai 2015 à 18:22
En fait, la ligne
Il faut mettre
Elle ne sert que si une ligne ne comporte que des blancs mais n'est pas activée si une ligne est vide.
En effet for /F saute les lignes vides.
if "%1" == "" exitest un peu fausse
Il faut mettre
if "%1" == "" exit /Bsinon on sort de cmd.exe et pas seulement du batch.
Elle ne sert que si une ligne ne comporte que des blancs mais n'est pas activée si une ligne est vide.
En effet for /F saute les lignes vides.
dubcek
Messages postés
18728
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
29 mai 2024
5 615
7 mai 2015 à 15:10
7 mai 2015 à 15:10
hello
essayer avec des " autour de %%R
essayer avec des " autour de %%R
for ... call :cmd "%%R")