je viens vers vous car j'ai un soucis depuis quelques heures que je peine à résoudre..
Voici mon problème.
J'ai une suite de lignes dans un fichier txt que je souhaite parcourir une par une et enregistrer leurs contenu dans une variable à partir du 43èmme caractère.
Pour cela dans un premier temps j'ai fais ceci (qui fonctionne)
Set "Filename= 1 75 4294967295 connected Loopback Pseudo-Interface 1"
echo %Filename%
Set "Filename=%Filename:~+43%"
echo %FILENAME%
As-tu essayé: echo "%%i" Voici ce que echo /? me donne: Affiche des messages ou active/désactive l’affichage des commandes. ECHO [ON | OFF] ECHO [message] Entrez ECHO sans paramètre pour afficher l’état en cours de la commande.
Le Tout est souvent plus grand que la somme de ses parties.
Oui bien-sûr, il m'affiche ce message (Commande ECHO désactivée.) car là la variable est vide… si je mets du texte avant ou après la variable il me l'affiche faisant disparaître en même temps le message…
edit : et oui j'ai bien testé le "echo %%i" et il m'affiche bien les lignes demandées comme j'ai mis sur le résultat…
Je pense que la syntaxe %%i:~+43% donne un mauvais résultat. Ça me surprend même que tu n'aies pas d'erreur. Essaies: set Filename=%%i set Filename=%Filename:~+43% Ça devrait mieux fonctionner. C'est comme si cmd ne reconnaissait pas une forme avec 3 %
Le Tout est souvent plus grand que la somme de ses parties.
Pour ce qui est de la couleur, désolé, j'utilise Block-Notes et je vais directement sur cmd. Je retrouve le même problème et je n'ai pas réussi à le corriger. Ce n'est pas le découpage qui pose problème. J'ai essayé directemenrt sur cmd: set aa=123456789 set aa=%aa:~3% echo %aa% et ça me donne: 456789 Je fais la même chose dans un script .bat et j'ai le même résultat. J'ai également essayé le script qui pose problème avec @echo on Je peux voir l'assignation sur la ligne de commande mais on dirait que ça se perd quelque part.
Le Tout est souvent plus grand que la somme de ses parties.
Tu ne peux pas faire de goto avec une liste d'arguments? Comment ferait-on si on ne connais pas la liste des éléments du fichier à l'avance? C'est vraiment la définition des variables qui pose problème, car mes for fonctionnent si les noms sont des fichiers et que j'agit sur leur contenu. J'ai déjà fait quelque chose du genre: echo %%i | sed ... >> sortie OK, Tout le monde n'a pas sed sur Windows ...
Le Tout est souvent plus grand que la somme de ses parties.
J'ai ça setlocal enabledelayedexpansion et tu peut crée une variable dans un for (en remplaçant les %% par des !!)
@echo off
setlocal enabledelayedexpansion
for /l %%a in (0,1,99) do (
set essai=texte
echo !essai!
)
endlocal
pause
Il y a surement un problème avec %%i:~+43%
Ps: C'est quoi sed et a quoi sert 'il...?
@echo off
setlocal enabledelayedexpansion
::ceci ne marche pas pourquoi?... je ne sais pas
for /f "skip=3 delims=" %%i in ('type abc.txt') do (
echo %%i
set truc=%%i:~+3%
echo !truc!
pause
)
endlocal
- Edité par Bidouillman 15 janvier 2021 à 20:15:33
Le code est notre langue, la programmation notre passion, la technologie notre avenir!
nLe programme sed vient de Unix/Linux. Ce que j'ai voulu illustrer est que echo fait suivre l'outpput dans l'input d'un autre programme. Ce n'est pas le %%i qui ne fonctionne pas ici. La forme %%i:~+43% contient 3 '%'. Je serais surpris que cmd accepte cette forme. Mais cmd ne me donne aucune erreur. C'est ça le pire ...
Le Tout est souvent plus grand que la somme de ses parties.
@echo off
setlocal enabledelayedexpansion
:step1
set ligne=
::numero de ligne (qui s'incrémente automatiquement)
set /a numero+=1
for /f "delims=" %%a in ('more/e +!numero! ^< bat2.txt') do (
if not defined ligne set "ligne=%%a"
)
::Affiche la ligne en enlevant le 1er caractere
echo %ligne:~1%
echo %numero%
pause
goto step1
endlocal
Passe ton sujet en résolue !!!
- Edité par Bidouillman 16 janvier 2021 à 14:52:34
Le code est notre langue, la programmation notre passion, la technologie notre avenir!
J'avais complétement oublié de retourner sur le sujet.. :/
Voici ce que j'ai réussi également à faire de mon côté.
@echo off & Setlocal enabledelayedexpansion
REM RECUPERE TOUTE LES CARTES RESEAUX
chcp 1252 > NUL
netsh interface ipv4 show interface > tempFile1.txt
chcp 850 > NUL
REM NETTOYAGE DU RESULTAT
for /f "skip=3 delims=" %%i in ('type tempFile1.txt') do (
set var=%%i
rem chcp 1252
echo !var:~43! >> tempFile.txt
)
pause
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le code est notre langue, la programmation notre passion, la technologie notre avenir!
Le Tout est souvent plus grand que la somme de ses parties.
Le code est notre langue, la programmation notre passion, la technologie notre avenir!
Le Tout est souvent plus grand que la somme de ses parties.
Le code est notre langue, la programmation notre passion, la technologie notre avenir!
Le Tout est souvent plus grand que la somme de ses parties.
Le code est notre langue, la programmation notre passion, la technologie notre avenir!