Batch ecriture en ligne au lieu de colonne
orkal
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à toutes et à tous,
J'ai un probleme dans mon script batch. Celui-ci extrait correctement d'un fichier txt les données que je souhaite sauf qu'au lieu de les mettre sous la forme A;B;C;D;E, il me les mets sous forme de colonne...
le code:
for /f "tokens=2* delims==" %%i in ('type Log.txt ^| findstr /i /c:"="') do (
if not %%i== 0 echo %%i %%j >> End.txt
)
Comment lui dire de les ecrire les uns à la suite des autres?
Je vous remercie.
orkal
J'ai un probleme dans mon script batch. Celui-ci extrait correctement d'un fichier txt les données que je souhaite sauf qu'au lieu de les mettre sous la forme A;B;C;D;E, il me les mets sous forme de colonne...
le code:
for /f "tokens=2* delims==" %%i in ('type Log.txt ^| findstr /i /c:"="') do (
if not %%i== 0 echo %%i %%j >> End.txt
)
Comment lui dire de les ecrire les uns à la suite des autres?
Je vous remercie.
orkal
8 réponses
-
hello
en ajoutant le texte à une variableC:> type f2.txt a b c d e C:> aa a;b;c;d;e C:> type aa.bat @echo off setlocal enableDelayedExpansion set x= for /f "tokens=1" %%a in ('type f2.txt') do ( if not "!x!" == "" set c=; set x=!x!!c!%%a ) echo %x% C:> -
on definit un caratctère délimiteur avec delims=+
on supprime l'espace dans le texte avec set z=!z: =!C:> type f2.txt A B C D/ E F/ G C:> C:> aa A;B;C;D/E;F/G C:> C:> type aa.bat @echo off setlocal enableDelayedExpansion set x= for /f "delims=+ tokens=1" %%a in ('type f2.txt') do ( set z=%%a set z=!z: =! if not "!x!" == "" set c=; set x=!x!!c!!z! ) echo %x% -
Sinon pour reprendre la réponse de Flashy Joe :
for /f "tokens=2* delims==" %%i in ('type Log.txt ^| findstr /i /c:"="') do ( if not %%i== 0 echo ^-n %%i %%j >> End.txt )
Il faut rajouter un ^ avant le -n.
Je crois que ça peut marcher... -
Salut,
il suffit de supprimer les sauts de lignes générés automatiquement par la commande echo en lui passant l'argument -n :for /f "tokens=2* delims==" %%i in ('type Log.txt ^| findstr /i /c:"="') do ( if not %%i== 0 echo -n %%i %%j >> End.txt )
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
J'ai déjà tenté le -n, ça ne marche pas, ça le prend en caractère et il est donc présent sur le fichier txt.
T'as une autre idée?
Merci en tout cas -
Super !!!
Ca marche, merci beaucoup dubcek
Un dernier point.
Mon fichier txt est du type
A
B
C
D/ E
F/ G
Avec ta methode, ça me mets A;B;C;D/;F/;
Et j'aimerai A;B;C;D/E;F/G
Edit: si je supprime "manuellement" les espaces entre les / et les lettre, ça marche correctement. Donc cela revient à chercher comment supprimer les espaces dans le fichier txt. Ou bien, poser une condition pour dire que quand il y a un "/", on ajoute le morceau suivant(qui est supprimé ici)...
Tu as une idée?
Merci en tout cas :)
orkal -
Genial ça marche :)
Derniere petite colle:
J'ai deux bat qui fonctionne correctement chacun à la suite de l'autre, mais je n'arrive pas à les mettre dans un seul .bat . Pour une raison obscure, ils ne veulent pas en former qu'un....
Une idée?
Merci dubcek :)
orkal -
Je n'ai pas de goto, dans aucun des deux bats...
le premier bat se connecte via un ftp, recupere un fichier
le second traite ce fichier
Il marche tout les deux tres bien maintenant, mais lorsque je les mets l'un à la suite de l'autre.... marche pas
Le code:
@echo off
echo IP?
set /P ip=
ftp -n -d -s:session.txt %ip%
quit
en fait, apres la commande ftp, aucune commande n'est prise en compte (il ne quitte pas comme je lui demande...)