Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

nettoyage

6 réponses
Avatar
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

6 réponses

Avatar
Méta-MCI \(MVP\)
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
Avatar
Gilles LAURENT [MVP]
"moi" a écrit dans le message de
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
Avatar
moi
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

Avatar
Gilles LAURENT [MVP]
"moi" a écrit dans le message de
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
Avatar
Gilles LAURENT [MVP]
"Méta-MCI (MVP)" a écrit dans le
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
Avatar
F. Dunoyer [MVP]
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