Bonjour,
Tous les jours, 3 fois par jour, je convertis un certain nombre de
messages sous format .txt.
Ces fichiers sont stockés dans un répertoire portant la date du jour, et
via l'extraction porte un nom quelconque, déterminé par le système.
Dans chaque fichier existe une ligne commençant par Obj/, cette ligne
pouvant se trouver n'importe où (en général dans les dix premières lignes)
Ce que je cherche à faire, c'est de mettre le script dans le répertoire
actif, passer tous les fichiers *.txt en revue, et renommer le fichier
avec le contenu situé après Obj/
Merci pour vos réponses
Re-, fait quand même quelques essais, mais..... Existe-t-il un code comme dans VBA, On Error Resume Next car, il se peut que le fichier ait été déjà renommé (le matin) et après ajout de nouveaux fichiers, relancer le script, mais en ignorant les fichiers préalablement renommés Merci
"cousinhub" a écrit dans le message de news: | Bonjour
Bonjour,
| les 2 codes changent bien le nom, mais oublient l'extension
C'est dans le but de respecter le cachier des charges :-) Les fichiers sont renommés avec le nom situé derrière la balise /Obj. Si ce nom ne comporte pas d'extension alors le fichier est renommé sans extension. Pour adapter le script VBScript il suffit de spécifier l'extension ".txt" lors de l'appel à la méthode Move de l'objet File :
Re-,
fait quand même quelques essais, mais.....
Existe-t-il un code comme dans VBA, On Error Resume Next
car, il se peut que le fichier ait été déjà renommé (le matin)
et après ajout de nouveaux fichiers, relancer le script, mais en
ignorant les fichiers préalablement renommés
Merci
"cousinhub" <pmcsnhb_nospam@aol.com> a écrit dans le message de
news:uxMgumYfIHA.1164@TK2MSFTNGP02.phx.gbl
| Bonjour
Bonjour,
| les 2 codes changent bien le nom, mais oublient l'extension
C'est dans le but de respecter le cachier des charges :-)
Les fichiers sont renommés avec le nom situé derrière la balise /Obj. Si
ce nom ne comporte pas d'extension alors le fichier est renommé sans
extension. Pour adapter le script VBScript il suffit de spécifier
l'extension ".txt" lors de l'appel à la méthode Move de l'objet File :
Re-, fait quand même quelques essais, mais..... Existe-t-il un code comme dans VBA, On Error Resume Next car, il se peut que le fichier ait été déjà renommé (le matin) et après ajout de nouveaux fichiers, relancer le script, mais en ignorant les fichiers préalablement renommés Merci
"cousinhub" a écrit dans le message de news: | Bonjour
Bonjour,
| les 2 codes changent bien le nom, mais oublient l'extension
C'est dans le but de respecter le cachier des charges :-) Les fichiers sont renommés avec le nom situé derrière la balise /Obj. Si ce nom ne comporte pas d'extension alors le fichier est renommé sans extension. Pour adapter le script VBScript il suffit de spécifier l'extension ".txt" lors de l'appel à la méthode Move de l'objet File :
Existe-t-il un code comme dans VBA, On Error Resume Next car, il se peut que le fichier ait été déjà renommé (le matin) et après ajout de nouveaux fichiers, relancer le script, mais en ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je pense que la meilleure solution consiste à tester l'existance du fichier avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt" If Not oFs.FileExists(sNewName) Then oFile.Move sNewName End If End If
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Existe-t-il un code comme dans VBA, On Error Resume Next
car, il se peut que le fichier ait été déjà renommé (le matin)
et après ajout de nouveaux fichiers, relancer le script, mais en
ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je
pense que la meilleure solution consiste à tester l'existance du fichier
avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then
sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt"
If Not oFs.FileExists(sNewName) Then
oFile.Move sNewName
End If
End If
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Existe-t-il un code comme dans VBA, On Error Resume Next car, il se peut que le fichier ait été déjà renommé (le matin) et après ajout de nouveaux fichiers, relancer le script, mais en ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je pense que la meilleure solution consiste à tester l'existance du fichier avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt" If Not oFs.FileExists(sNewName) Then oFile.Move sNewName End If End If
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
cousinhub
Merci, encore une fois.... Comme là je travaille à vue, pour le moment, c'est exactement ce que je veux, mais je pense que je reviendrai, car il me semble que parfois, il y a plusieurs sections pour le même objet, mais n'ayant pas d'exemple sous la main, j'attendrai afin de poser avec le maximum d'éléments Bonne semaine
Existe-t-il un code comme dans VBA, On Error Resume Next car, il se peut que le fichier ait été déjà renommé (le matin) et après ajout de nouveaux fichiers, relancer le script, mais en ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je pense que la meilleure solution consiste à tester l'existance du fichier avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt" If Not oFs.FileExists(sNewName) Then oFile.Move sNewName End If End If
Merci, encore une fois....
Comme là je travaille à vue, pour le moment, c'est exactement ce que je
veux, mais je pense que je reviendrai, car il me semble que parfois, il
y a plusieurs sections pour le même objet, mais n'ayant pas d'exemple
sous la main, j'attendrai afin de poser avec le maximum d'éléments
Bonne semaine
Existe-t-il un code comme dans VBA, On Error Resume Next
car, il se peut que le fichier ait été déjà renommé (le matin)
et après ajout de nouveaux fichiers, relancer le script, mais en
ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je
pense que la meilleure solution consiste à tester l'existance du fichier
avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then
sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt"
If Not oFs.FileExists(sNewName) Then
oFile.Move sNewName
End If
End If
Merci, encore une fois.... Comme là je travaille à vue, pour le moment, c'est exactement ce que je veux, mais je pense que je reviendrai, car il me semble que parfois, il y a plusieurs sections pour le même objet, mais n'ayant pas d'exemple sous la main, j'attendrai afin de poser avec le maximum d'éléments Bonne semaine
Existe-t-il un code comme dans VBA, On Error Resume Next car, il se peut que le fichier ait été déjà renommé (le matin) et après ajout de nouveaux fichiers, relancer le script, mais en ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je pense que la meilleure solution consiste à tester l'existance du fichier avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt" If Not oFs.FileExists(sNewName) Then oFile.Move sNewName End If End If
cousinhub
Bonjour, après quelques essais, je me suis rendu compte que parfois (assez rarement), le fichier ne comporte pas le mot Obj, et donc le script se bloque avec ce code erreur (je suppose que c'est pour cela) :
Est-il également possible de tester la présence de ce mot, et s'il n'existe pas, de continuer avec les autres fichiers. Merci, et bonne soirée
Ps : le code en entier :
Set oFs=CreateObject("Scripting.FileSystemObject") Set oRe=New RegExp: oRe.IgnoreCase=True: oRe.MultiLine=True For Each oFile In oFs.GetFolder(".").Files oRe.Pattern=".txt$" If oRe.Test(oFile.Name) Then sLines=oFs.OpenTextFile(oFile.Name).ReadAll() oRe.Pattern="^obj/(.*)r$" If oRe.Test(sLines) Then sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt" If Not oFs.FileExists(sNewName) Then oFile.Move sNewName End If End If End If Next
Existe-t-il un code comme dans VBA, On Error Resume Next car, il se peut que le fichier ait été déjà renommé (le matin) et après ajout de nouveaux fichiers, relancer le script, mais en ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je pense que la meilleure solution consiste à tester l'existance du fichier avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt" If Not oFs.FileExists(sNewName) Then oFile.Move sNewName End If End If
Bonjour,
après quelques essais, je me suis rendu compte que parfois (assez
rarement), le fichier ne comporte pas le mot Obj, et donc le script se
bloque avec ce code erreur (je suppose que c'est pour cela) :
Est-il également possible de tester la présence de ce mot, et s'il
n'existe pas, de continuer avec les autres fichiers.
Merci, et bonne soirée
Ps : le code en entier :
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oRe=New RegExp: oRe.IgnoreCase=True: oRe.MultiLine=True
For Each oFile In oFs.GetFolder(".").Files
oRe.Pattern=".txt$"
If oRe.Test(oFile.Name) Then
sLines=oFs.OpenTextFile(oFile.Name).ReadAll()
oRe.Pattern="^obj/(.*)r$"
If oRe.Test(sLines) Then
sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt"
If Not oFs.FileExists(sNewName) Then
oFile.Move sNewName
End If
End If
End If
Next
Existe-t-il un code comme dans VBA, On Error Resume Next
car, il se peut que le fichier ait été déjà renommé (le matin)
et après ajout de nouveaux fichiers, relancer le script, mais en
ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je
pense que la meilleure solution consiste à tester l'existance du fichier
avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then
sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt"
If Not oFs.FileExists(sNewName) Then
oFile.Move sNewName
End If
End If
Bonjour, après quelques essais, je me suis rendu compte que parfois (assez rarement), le fichier ne comporte pas le mot Obj, et donc le script se bloque avec ce code erreur (je suppose que c'est pour cela) :
Est-il également possible de tester la présence de ce mot, et s'il n'existe pas, de continuer avec les autres fichiers. Merci, et bonne soirée
Ps : le code en entier :
Set oFs=CreateObject("Scripting.FileSystemObject") Set oRe=New RegExp: oRe.IgnoreCase=True: oRe.MultiLine=True For Each oFile In oFs.GetFolder(".").Files oRe.Pattern=".txt$" If oRe.Test(oFile.Name) Then sLines=oFs.OpenTextFile(oFile.Name).ReadAll() oRe.Pattern="^obj/(.*)r$" If oRe.Test(sLines) Then sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt" If Not oFs.FileExists(sNewName) Then oFile.Move sNewName End If End If End If Next
Existe-t-il un code comme dans VBA, On Error Resume Next car, il se peut que le fichier ait été déjà renommé (le matin) et après ajout de nouveaux fichiers, relancer le script, mais en ignorant les fichiers préalablement renommés
Tout à fait, cette déclaration existe également en VBScript. Toutefois je pense que la meilleure solution consiste à tester l'existance du fichier avant de procéder au renommage. Le bout de code devient donc :
If oRe.Test(sLines) Then sNewName=oRe.Execute(sLines)(0).SubMatches(0) & ".txt" If Not oFs.FileExists(sNewName) Then oFile.Move sNewName End If End If
Gilles LAURENT [MVP]
"cousinhub" a écrit dans le message de news: | Bonjour,
Bonjour,
| après quelques essais, je me suis rendu compte que parfois (assez | rarement), le fichier ne comporte pas le mot Obj, et donc le script se | bloque avec ce code erreur (je suppose que c'est pour cela) : | | Ligne : 11 | Caract. : 9 | Erreur : Chemin d'accès introuvable | Code : 800A004C
Je reproduis cette erreur si la chaine de caractères qui suit Obj/ est un chemin d'accès. Par exemple : Obj/c:toto
Pouvez-vous joindre le fichier provoquant cette erreur ?
| Est-il également possible de tester la présence de ce mot, et s'il | n'existe pas, de continuer avec les autres fichiers.
C'est déjà le cas ;-)
oRe.Pattern="^obj/(.*)r$" If oRe.Test(sLines) Then ... End If
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"cousinhub" <pmcsnhb_nospam@aol.com> a écrit dans le message de
news:emhGeQvgIHA.5824@TK2MSFTNGP03.phx.gbl
| Bonjour,
Bonjour,
| après quelques essais, je me suis rendu compte que parfois (assez
| rarement), le fichier ne comporte pas le mot Obj, et donc le script se
| bloque avec ce code erreur (je suppose que c'est pour cela) :
|
| Ligne : 11
| Caract. : 9
| Erreur : Chemin d'accès introuvable
| Code : 800A004C
Je reproduis cette erreur si la chaine de caractères qui suit Obj/ est
un chemin d'accès. Par exemple :
Obj/c:toto
Pouvez-vous joindre le fichier provoquant cette erreur ?
| Est-il également possible de tester la présence de ce mot, et s'il
| n'existe pas, de continuer avec les autres fichiers.
C'est déjà le cas ;-)
oRe.Pattern="^obj/(.*)r$"
If oRe.Test(sLines) Then
...
End If
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
"cousinhub" a écrit dans le message de news: | Bonjour,
Bonjour,
| après quelques essais, je me suis rendu compte que parfois (assez | rarement), le fichier ne comporte pas le mot Obj, et donc le script se | bloque avec ce code erreur (je suppose que c'est pour cela) : | | Ligne : 11 | Caract. : 9 | Erreur : Chemin d'accès introuvable | Code : 800A004C
Je reproduis cette erreur si la chaine de caractères qui suit Obj/ est un chemin d'accès. Par exemple : Obj/c:toto
Pouvez-vous joindre le fichier provoquant cette erreur ?
| Est-il également possible de tester la présence de ce mot, et s'il | n'existe pas, de continuer avec les autres fichiers.
C'est déjà le cas ;-)
oRe.Pattern="^obj/(.*)r$" If oRe.Test(sLines) Then ... End If
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr