jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 18 sept. 2007 à 11:14
Salut,
Il te suffit de récupérer le contenu de tout les fichiers dans des tableaux et de faire un Tableau contenant ensuite TOUT les autre contenus.
Puis tu écrit dans un nouveau fichier et efface les anciens (ou non d'ailleurs)
allthew3
Messages postés551Date d'inscriptionsamedi 8 janvier 2005StatutMembreDernière intervention12 avril 20082 18 sept. 2007 à 11:44
Dim text as string = ""
text &= IO.File.ReadAllText(fichier) ' fait ça pour tous les fichiers textes
IO.File.WriteAllText(fichier) ' on ecrit tout ...
bien sûr mon code n'est que pour les fichiers assez petit (on diras moins de 10 Mo ...) après faut des stringbuilders, voir des fichiers temp, ou alors tout simplement ecrire par parties ...
allthew3
Messages postés551Date d'inscriptionsamedi 8 janvier 2005StatutMembreDernière intervention12 avril 20082 18 sept. 2007 à 11:45
Je m'explique pour "tout simplement ecrire par parties" :
Using sr as new io.StreamReader(fichier1)
Using sw as new IO.StreamWriter(nouveaufichier, true)
Do until sr.endofstream
sw.writeline(sr.readline)
Loop
End Using
End Using
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 18 sept. 2007 à 18:30
Bonsoir à tous,
En simple vbs, le script pourrait se résumer à:
Option Explicit
Dim objFso, arrTmp(), strPath, strFileResult
ReDim arrTmp(0)
strPath = "D:\SCRIPTS\Fichiers" 'répertoire à analyser
strFileResult = "D:\SCRIPTS\resultat.txt"
Set objFso = CreateObject("Scripting.FileSystemObject")
Call FnSelectFiles(strPath, arrTmp)
Call FnWriteResult(arrTmp)
Set objFso = Nothing
MsgBox "script terminé"
'--------------------------------------------------
Function FnSelectFiles(strPath, arrTmp)
Dim objTextStream, strFile
For Each strFile in objFso.GetFolder(strPath).Files
'selection extension txt
If LCase(objFso.GetExtensionName(strFile.Name)) = "txt" Then
Set objTextStream = objFso.OpenTextFile(strFile.Path, 1)
Do While Not objTextStream.AtEndOfStream
ReDim Preserve arrTmp(UBound(arrTmp) + 1)
arrTmp(UBound(arrTmp)) = strFile.Name &vbTab& objTextStream.ReadLine
'arrTmp(UBound(arrTmp)) = objTextStream.ReadLine
Loop
objTextStream.Close
End If
Next
Set objTextStream = Nothing
FnSelectFiles = arrTmp
End Function
'--------------------------------------------------
Function FnWriteResult(strTmp)
Dim objTextResult, i
Set objTextResult = objFso.OpenTextFile(strFileResult, 2, True)
For i = 1 to Ubound(strTmp)
objTextResult.Write strTmp(i) &vbcrlf
Next
objTextResult.Close
Set objTextResult = Nothing
End Function
'--------------------------------------------------
Bonsoir PCPT,
Tu m'as enseigné, entre autres, le Preserve , donc je l'utilise !
Alors que mes fichiers scripts rendent les résultats suivant
Nasbe
192.168.1.2 , 1
Marc
192.168.1.3 , 1
1) Comment faire pour supprimer le Nasbe.txt?
2) Une autre question concernait mes fichiers scripts nasbe.txt et marc.txt.
Comment faire pour les exécuter au démarrage?
3) Ma troisième question était de pouvoir les supprimers lors d'un logout.
A quelle niveau dois-je le faire. En fait pour être plus clair, lorsque qu'un utilisateur se connecte, j'aimerai que son script soit exécuter (le script récupère l'adresse ip et le nom d'utilisateur et le place dans un dossier partagé) puis lorsque qu'il se délogue, j'aimerai pouvoir supprimer son fichier texte de ce dossier partager. Voilà ma question.
4) La dernière était de pouvoir exécuter le fichier de concaténation toute les 5sec a peu près. Comme cela j'aurai dans ce fichier tous les utilisateurs et les adresses ip des utilisateurs connecté. Quelqu'un aurait-il une piste a ce niveau là.
bernhardjo
Messages postés31Date d'inscriptionlundi 13 février 2006StatutMembreDernière intervention11 juin 2008 19 sept. 2007 à 13:36
Merci bien pour ton aide.
Et comment faire maintenant pour supprimer le résultat du script (fichier .txt) qui se trouve dans un dossier partagé lorsque l'utilisateur se déconnecte ?
Et dernière petite question, comment fait pour qu'un script s'execute automatiquement toute les 5-10 secondes approximativemnt
bernhardjo
Messages postés31Date d'inscriptionlundi 13 février 2006StatutMembreDernière intervention11 juin 2008 19 sept. 2007 à 19:31
ok et comment faire sur ce script, car je j'aimerai qu'il concatène les données de fichier différent mais pas ceux qui porte le même nom. Or ici il concatene à chaque fois.
Set objFso = CreateObject("Scripting.FileSystemObject")
Call FnSelectFiles(strPath, arrTmp)
Call FnWriteResult(arrTmp)
Set objFso = Nothing
MsgBox "script terminé"
'--------------------------------------------------
Function FnSelectFiles(strPath, arrTmp)
Dim objTextStream, strFile
For Each strFile in objFso.GetFolder(strPath).Files
'selection extension txt
If LCase(objFso.GetExtensionName(strFile.Name)) = "txt" Then
Set objTextStream = objFso.OpenTextFile(strFile.Path, 1)
Do While Not objTextStream.AtEndOfStream
ReDim Preserve arrTmp(UBound(arrTmp) + 1)
arrTmp(UBound(arrTmp)) = objTextStream.ReadLine
'arrTmp(UBound(arrTmp)) = objTextStream.ReadLine
Loop
objTextStream.Close
End If
Next
Set objTextStream = Nothing
FnSelectFiles = arrTmp
End Function
'--------------------------------------------------
Function FnWriteResult(strTmp)
Dim objTextResult, i
Set objTextResult = objFso.OpenTextFile(strFileResult, 2, True)
For i = 1 to Ubound(strTmp)
objTextResult.Write strTmp(i) &vbcrlf
Next
objTextResult.Close
Set objTextResult = Nothing
End Function
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 19 sept. 2007 à 21:08
Bonsoir,
If LCase(objFso.GetExtensionName(strFile.Name)) = "txt" Then
Set objTextStream = objFso.OpenTextFile(strFile.Path, 1)
Do While Not objTextStream.AtEndOfStream
ReDim Preserve arrTmp(UBound(arrTmp) + 1)
arrTmp(UBound(arrTmp)) = objTextStream.ReadLine
'arrTmp(UBound(arrTmp)) = objTextStream.ReadLine
Loop
objTextStream.Close
'ici ton fichier "strFile.Path" est traité, tu peux, donc, faire un "objFso.MoveFile source, destination"
'ou un "objFso.DeleFile source"
End If
bernhardjo
Messages postés31Date d'inscriptionlundi 13 février 2006StatutMembreDernière intervention11 juin 2008 20 sept. 2007 à 11:17
Salut,
J'ai pas trouvé l'astuce, en fait j'aimerai, a chaque fois que je lance mon script, que j'écrase (je remplace) le fichier.txt en place par le nouveau fichier. Comme ca, à chaque fois que je lance mon script, il concatène les fichiers dans le répertoire. Dans la situation dans laquelle je suis actuellement, je lance mon script, il concatène, ok mais si je le relance encore une fois, il va continuer a concaténer, ca fait des doublons dans mon fichier resultat.
J'espère que j'aurai été assez clair. Je te remercie déjà de tout ce que t'as pu m'aider. Bonne journée.
For Each strFile in objFso.GetFolder(strPath).Files
'selection extension txt
If LCase(objFso.GetExtensionName(strFile.Name)) = "txt" Then
Set objTextStream = objFso.OpenTextFile(strFile.Path, 1)
Do While Not objTextStream.AtEndOfStream
ReDim Preserve arrTmp(UBound(arrTmp) + 1)
arrTmp(UBound(arrTmp)) = objTextStream.ReadLine