Batch windows - Supprimer/modifier une ligne d'un fichier - Divers - Programmation
Marsh Posté le 05-04-2006 à 17:31:52
Juste pour infos,
il existe une solution en utilisant FIND /V "CONNECTION" fichier_in.txt >fichier_out.txt
ou avec grep -v si on a grep.
Marsh Posté le 05-04-2006 à 19:40:58
olivthill a écrit : Juste pour infos, |
Je ne pensais pas qu'il y aurait une solution aussi simple. Je pense qu'elle me convient parfaitement.
Merci beaucoup
Par contre j'ai une autre question. Comment puis-je faire maintenant pour modifier une ligne.
J'ai la ligne suivante dans mes fichiers : DB2=BASE.DATABASE (par exemple)
et je voudrais supprimer le nom de la base et le "."
Est-ce que je peux y arriver sans mettre en oeuvre la solution que j'ai cité dans mon premier poste?
Cad lire chaque ligne et si elle commence par DB2 ne garder que DB2=DATABASE . Au quel cas je retombe dans mon problème de plantage :-/
Marsh Posté le 05-04-2006 à 20:48:20
polo021 a écrit : mon code :
|
Code :
|
Marsh Posté le 06-04-2006 à 07:54:12
Effectivement, apres avoir testé la solution proposée par OlivThill, je peux voir que ca fonctionne bien si ce n'est qu'en début de fichier je trouve les 2 lignes suivantes :
|
et je ne veux pas ca au début de mon fichier .
Merci à nglechau pour la syntaxe de mon IF. Ca corrige un problème mais j'ai toujours un plantage si la ligne que je teste est < que 10 caractères de long.
Merci
Marsh Posté le 06-04-2006 à 08:44:07
polo021 a écrit : Merci à nglechau pour la syntaxe de mon IF. Ca corrige un problème mais j'ai toujours un plantage si la ligne que je teste est < que 10 caractères de long. |
Impossible que ça plante à cause de la longueur de la ligne :
Code :
|
ou encore :
Code :
|
Dans les deux exemples, les sous-chaînes extraites sont simplement vides.
A moins que tu aies les caractères spéciaux dans ton texte, et ça se trouve qu'ils sont dans une ligne courte. Là, effectivement, ça peut planter.
Marsh Posté le 06-04-2006 à 09:26:59
wackevat a écrit : Impossible que ça plante à cause de la longueur de la ligne :
|
oui j'ai un caractère spécial dans la ligne car ma ligne vaut :
" " |
et là le test plante
Code :
|
J'ai des " en début et fin de ligne car la ligne est lue dans un fichier :-(
Je pourrais faire un test spécial pour ce cas là mais c'est pas top comme programmation.
Code :
|
Est-ce que je pourrais éviter d'avoir des " quand je lis mes lignes dans le fichier en entrée? Ou une autre solution
EDIT : j'ai trouvé
set ligne = %~1
le ~ dans cette commande enlève les quotes qui entourent ma ligne.
le problème est que maintenant la commande
@ECHO %ligne% >> monfichierdesortie
inscrit ECHO IS ON dans le fichier si je traite une ligne qui contient un espace. Je crois donc que je vais utiliser un IF pour ne pas traiter ces ligne qui m'embettent.
Marsh Posté le 06-04-2006 à 13:32:05
Si tu as systématiquement des quotes autour de chaque ligne, et uniquement autour, oui, %~1 t'en débarrasse.
Si tu as des lignes sans quotes, et celles-ci contiennent des blancs, %1 ne prendra en compte que la première partie avant le premier espace/tab.
Pareil si tu as un troisième guillemet au milieu de la ligne.
Pour ton ECHO IS ON, il suffit de faire un
if not "%ligne%" == "" echo %ligne%>>sortie.
Marsh Posté le 05-04-2006 à 17:23:04
Salut,
Je fais un .bat qui lit tous les fichiers d'un dossier et qui réécrit le contenu de chaque fichier dans un nouveau fichier.
Le fait est que je ne veux pas garder les lignes qui commencent par le mot CONNECTION.
mon code :
Ca fonctionne mais si une ligne du fichier a une longueur inférieure à 10 caractères le programme plante car il ne peut pas faire la comparaison. "The syntax of the command is incorrect"
Comment pourrais-je éviter ce plantage? Je ne trouve pas de commande pour compter le nombre de caractères d'une ligne.
MErci de votre aide
Message édité par polo021 le 05-04-2006 à 19:57:33