nettoyage

Le
moi
Bonjour,

Dans un fichier (sortie log de Robocopy)
les débuts de lignes contiennent
des tabulations et des espaces ( mélange )

J'aimerais nettoyer ça de façon "simple et efficace"
la présence de tabulation fait que les fonction vbs
Gtrim, Ltrim et Trim sont sans effet

J'aimerais donc fabriquer des fonctions ExLTrim, ExGTrim et ExTrim
qui puisse virer les caractères transmis en arguments

Du style

Propre = ExLTrim( PasPropre,AVirer)


PasPropre est la ligne initiale
Propre est la ligne nettoyée
AVirer est un tableau de caractères
indiquant ceux qui doivent être virés en début de ligne

Bien sûr, je peux faire ça de façon un peu bestiale
avec des boucles For Next
mais je me dis que les as des RegExp
trouveront peut-être quelquechose de plus élégant


Merci d'avance,

HB
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Méta-MCI \(MVP\)
Le #710337
Bonsoir !


Inutile de s'encombrer de fonctions compliquées. Le FOR de l'invite de
commande fait un trim implicite.
Voici un exemple :

@echo off
Robocopy rsource rdestination /L /NJS /NJH /NC /NS
/LOG:robo.log
FOR /F %%f IN (robo.log) DO echo %%f


@-salutations
--
Michel Claveau
Gilles LAURENT [MVP]
Le #710336
"moi" news:
| Bonjour,

Bonsoir,

| J'aimerais nettoyer ça de façon "simple et efficace"
| la présence de tabulation fait que les fonction vbs
| Gtrim, Ltrim et Trim sont sans effet...

Ci-dessous une fonction permettant le [L|R]Trim
Tous les caractères d'espacement sont supprimés

--- Coupez ici ---
Function ExTrim (strPattern, strLine)

Set oRe=New RegExp
oRe.Pattern=strPattern
ExTrim=oRe.Replace(strLine,"")

End Function

Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFile=oFs.OpenTextFile("robocopy.log", 1)

While Not oFile.AtEndOfStream
strLine=oFile.Readline
'WScript.Echo ExTrim("^s+|s+$", strLine) ' Trim
'WScript.Echo ExTrim("^s+", strLine) ' LTrim
'WScript.Echo ExTrim("s+$", strLine) ' RTrim
Wend
--- Coupez ici ---

VBScript Pattern Property
http://msdn2.microsoft.com/en-us/library/f97kw5ka(VS.85).aspx

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
moi
Le #710335
Notre ami Méta-MCI (MVP) tapota :

@echo off
Robocopy rsource rdestination /L /NJS /NJH /NC /NS
/LOG:robo.log
FOR /F %%f IN (robo.log) DO echo %%f


Notre ami Gilles LAURENT [MVP] tapota :

Function ExTrim (strPattern, strLine)

Set oRe=New RegExp
oRe.Pattern=strPattern
ExTrim=oRe.Replace(strLine,"")

End Function

Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFile=oFs.OpenTextFile("robocopy.log", 1)

While Not oFile.AtEndOfStream
strLine=oFile.Readline
'WScript.Echo ExTrim("^s+|s+$", strLine) ' Trim
'WScript.Echo ExTrim("^s+", strLine) ' LTrim
'WScript.Echo ExTrim("s+$", strLine) ' RTrim
Wend
--- Coupez ici ---




Merci beaucoup à vous deux !!!
C'est incroyable comme c'est simple pour ceux qui savent ;o)

A+

HB

Gilles LAURENT [MVP]
Le #710334
"moi" news:
| Merci beaucoup à vous deux !!!
| C'est incroyable comme c'est simple pour ceux qui savent ;o)

Oops ! Bug sur la fonction ExTrim !

Function ExTrim (strPattern, strLine)

Set oRe=New RegExp
oRe.Pattern=strPattern
oRe.Global=True ' nécessaire pour le Trim
ExTrim=oRe.Replace(strLine,"")

End Function

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Gilles LAURENT [MVP]
Le #710333
"Méta-MCI (MVP)" message de
news:47a77086$0$903$
| Bonsoir !

Bonsoir,

| Inutile de s'encombrer de fonctions compliquées. Le FOR de l'invite de
| commande fait un trim implicite.
| Voici un exemple :
|
| @echo off
| Robocopy rsource rdestination /L /NJS /NJH /NC /NS
| /LOG:robo.log
| FOR /F %%f IN (robo.log) DO echo %%f

1- La ligne entière doit être préservée
@echo off
for /f "tokens=*" %%f in (robo.log) do echo %%f

2- La commande FOR ne fait qu'un LTrim

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
F. Dunoyer [MVP]
Le #710119
moi a formulé ce lundi :
Bonjour,

Dans un fichier (sortie log de Robocopy)
les débuts de lignes contiennent
des tabulations et des espaces ( mélange ...)

Ne pas oublier aussi du coté du robocopy le paramètre /NP qui produit

des logs beaucoups plus propres :)

--
François Dunoyer [MVP Windows Server / Security]
Jours après jours avec Longhorn Server
http://fds.mvps.org/LH/index.htm

Publicité
Poster une réponse
Anonyme