Batch ecriture en ligne au lieu de colonne

Fermé
orkal - 17 juin 2010 à 17:30
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 18 juin 2010 à 12:18
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
A voir également:

8 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
18 juin 2010 à 08:12
hello
en ajoutant le texte à une variable
C:> 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:>
1
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
18 juin 2010 à 11:49
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%
1
vincentdu76
18 juin 2010 à 11:55
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...
1
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
17 juin 2010 à 19:55
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
)

0

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
0
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
0
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
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
18 juin 2010 à 12:03
y pas de raison...
vérifier des goto qui ont le même nom, par ex.
0
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...)
0
C'est résolu. Il fallait simplement quitter le ftp en le precisant dans le session.txt :)

Merci beaucoup dubcek !!!!!!
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
18 juin 2010 à 12:18
quit est une commande ftp, il faut mettre le quit dans le fichier session.txt
0