Bonjour
J'ai un fichier de sortie .txt et je souhaiterai supprimer le dernier retour chariot.
Je n'y parviens pas.
Auriez-vous une piste s'il vous plaît ?
En vous remerciant de vos réponses.
Bonjour
J'ai un fichier de sortie .txt et je souhaiterai supprimer le dernier retour chariot.
Je n'y parviens pas.
Auriez-vous une piste s'il vous plaît ?
En vous remerciant de vos réponses.
Voici une proposition, avec les limitations que l'utilisation du batch implique.
Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 @echo off cls set src=texte.txt set dst=texte2.txt set /a count=0 for /F "tokens=1,* delims=: usebackq" %%a in (`findstr /n "^" ^< "%src%"`) do set /a count=%%a for /F "tokens=1,* delims=: usebackq" %%a in (`findstr /n "^" ^< "%src%"`) do ( if "%%b" == "" ( echo. ) else ( if %%a EQU %count% ( echo|set /p=%%b ) else ( echo %%b ) ) )>>%dst% pause
Pourquoi batch sinon ? pour ce genre de manipulation (et tout le reste d'ailleur) tu devrais utiliser un autre langage, plus fiable.
Bonjour,
Tout d'abord, merci beaucoup.
Le script proposé fonctionne bien dans un script séparé. Cependant lorsque j'intègre le code dans mon script initial, j'obtiens le message d'erreur suivant:
Voici l'extrait du script dans lesquels, il est inséré:La syntaxe de la commande n'est pas correcte
Pour répondre à la deuxième question, j'aurai préféré utiliser la commande sed voir tr mais je ne parviens pas à gérer uniquement la dernière ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 call:-f f2 %2 if defined r_val ( echo %~nx0: Please wait... %ls% -lGg %2 | %fr% -v "^d" | %fr% -v "%f_exc%" | %tl% -n+2 > %2\%t_tmp% %ct% %2\%t_tmp% | %ak% -v var="total " "{sum+=$3} END {print var sum}" > %2\%i_txt% %ct% %2\%t_tmp% | %fr% -v "%f_exc%" >> %2\%i_txt% %rm% %2\%t_tmp% set /a count=0 for /F "tokens=1,* delims=: usebackq" %%a in (`findstr /n "^" ^< "%2\%i_txt%"`) do set /a count=%%a for /F "tokens=1,* delims=: usebackq" %%a in (`findstr /n "^" ^< "%2\%i_txt%"`) do ( if "%%b" == "" ( echo. ) else ( if %%a EQU %count% ( echo|set /p=%%b ) else ( echo %%b ) ) )>>%2\test.txt set m_val=7 call:-m ) goto:eof
Que dire si ce n'est que tu aime les variables
Tu peux essayer comme ceci pour voir si cette simple ligne (elle compte le nombre de ligne du fichier) te génère une erreur. Ça sera plus facile à déboguer.
Tu as testé avec le même fichier %i_txt% ?
Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 call:-f f2 %2 if defined r_val ( echo %~nx0: Please wait... %ls% -lGg %2 | %fr% -v "^d" | %fr% -v "%f_exc%" | %tl% -n+2 > %2\%t_tmp% %ct% %2\%t_tmp% | %ak% -v var="total " "{sum+=$3} END {print var sum}" > %2\%i_txt% %ct% %2\%t_tmp% | %fr% -v "%f_exc%" >> %2\%i_txt% %rm% %2\%t_tmp% set /a count=0 for /F "tokens=1,* delims=: usebackq" %%a in (`findstr /n "^" ^< "%2\%i_txt%"`) do set /a count=%%a set m_val=7 call:-m ) goto:eof
Ps : je n'ai pas sed ni tr sur mon Windows 7![]()
Bonje vais utiliser directement une commande unix pour faire ce traitement. Cependant, je garde votre script de coté étant donné qu'il fonctionne.
Merci beaucoup pour votre aide précieuse![]()
Partager