Hitch16
Messages postés78Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention 6 octobre 2008
-
19 juil. 2006 à 11:25
papoow
Messages postés4Date d'inscriptionvendredi 29 septembre 2006StatutMembreDernière intervention19 juillet 2010
-
20 août 2009 à 11:20
Bonjour,
j'aurais aimé savoir s'il était possible et comment faire un script du genre:
<li>une input box dans laquelle on renseigne une chaine de caractères</li><li>une input box dans laquelle on renseigne une nouvelle chaine de caractères</li><li>le script test chaque script du dossier courant et remplace la première chaine par la nouvelle si elle est présente.</li>
Idéal quand on a renommé ou déplacé un partage réseau....
Du genre modification de tous les scripts du répertoire sysvol
Merci beaucoup d'avance!!
A voir également:
Modifier une chaine de caractères dans tous les scripts du répertoire courant
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 19 juil. 2006 à 17:01
Bonjour à tous....
Script en VBS, que je viens de créér (et tester):
Option Explicit
Dim Saisie1, Saisie2
Saisie1 = InputBox(vbCrLf&vbCrLf&vbCrLf&vbCrLf&"Quelle chaine de caractères" &_
"voulez-vous remplacer ???","Modification de script", "ligne")
If Saisie1 = "" Then WScript.Quit
Saisie2 = InputBox(vbCrLf&vbCrLf&vbCrLf&vbCrLf&"Par quelle chaine de caractères" &_
"voulez-vous remplacer la chaine " & Saisie1 &_
" ???","Modification de script", "JMO")
If Saisie2 = "" Then WScript.Quit
Const ForReading 1, ForWriting 2, ForAppending = 8
Dim fso, Dossiers, f, fichier, fichiers, i, strtmp, Resultat
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossiers = fso.GetFolder(GetPath)
Set fichiers = Dossiers.Files
'pour chaque fichier de mon objet fichiers de mon objet fso...:)
For Each fichier in fichiers
If fso.GetExtensionName(fichier) = "txt" Then
' MsgBox "verif fichier " & GetPath & fichier.Name
Dim objTextStream
Set objTextStream = Fso.OpenTextFile(GetPath & fichier.Name, ForReading)
Resultat = objTextStream.ReadAll
strtmp = split(Resultat,"")
For i = 0 to Ubound(strtmp)
If instr(trim(strtmp(i)),Saisie1) Then
' MsgBox "le fichier " & fichier.Name & " contient" &vbCrLf& strtmp(i)
strtmp(i) = Replace(strtmp(i), Saisie1, Saisie2)
' MsgBox "strtmp(i) de " & fichier.Name & " contient maintenant " &vbCrLf& strtmp(i)
End If
objTextStream.Close
Set objTextStream = Fso.OpenTextFile(GetPath & fichier.Name, ForWriting, True)
objTextStream.Write strtmp(i)
Next
objTextStream.Close
End If
Next
'Fonction de récupération du répertoire courant
Function GetPath()
Dim path
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, ""))
End Function
Set objTextStream = Nothing
Set f = Nothing
Set fso = Nothing
MsgBox "Modifications terminées !!!"
Hitch16
Messages postés78Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention 6 octobre 2008 25 juil. 2006 à 10:46
Bonjour,
voilà un CommonDialog mieux adapté encore mais je ne trouve pas le moyen de l'intégrer à ton Script JMO...
strFile renvoie le chemin complet du fichier, le nom et l'extension.
On peut sélectionner plusieurs fichiers en maintenant appuyé sur Ctrl
Quelqu'un aurait une idée???
'affiche une boite de dialogue à choix multiples
'*****valable uniquement sur XP*****
Dim objDialog, intResult, arrFiles, strFile
Set objDialog = CreateObject("UserAccounts.CommonDialog")
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 25 juil. 2006 à 18:02
Bonjour,
440681 Hitch16 , test négatif at home.
Aucune modif effectuée.
- attention aux fichiers dont le nom contient des spaces
- à la fin, rajoute un Set objDialog = Nothing pour libérer l'objet
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 26 juil. 2006 à 12:10
Bonjour,
Rajoute des MsgBox pour tes tests.
J'ai selectionné un fichier.vbs => c'est tout faux !!!!
strPath = StrFile donc
Dim objTextStream
Set objTextStream = Fso.OpenTextFile(strPath & strFile, ForReading)
ne peut pas fonctionner .....
arrFiles = Split(objDialog.FileName, " ")
For i = 0 to Ubound(arrFiles)
Dim cpt, liste
strPath = arrFiles(0)
strFile = arrFiles(i)
MsgBox strPath & " " & strFile
Hitch16
Messages postés78Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention 6 octobre 2008 26 juil. 2006 à 15:13
Bon alors, nouvel épisode.... <li>j'ai dit précédemment En remplaçant "For i 1 to Ubound(arrFiles)" par "For i 0 to Ubound(arrFiles)" ça marche!!! euh... oui ça marche pour un seul fichier mais pas pour plusieurs......
donc il faut laisser "For i = 1 to Ubound(arrFiles)", sachant que
le traitement ne fonctionnera pas si on ne sélectionne qu'un fichier....</li><li>Autre problème rencontré: le traitement ne s'effectue pas si on
sélectionne trop de fichier. Logique!! Une variable est limitée à 255
caractères et comme on stock les noms côte à côte, ça va vite. Donc si
on en voit pas la boîte de dialogue de fin c'est que rien n'a été
fait...</li>
Je ne sais pas trop comment résoudre le problème pour l'instant mais je vais y réfléchir, promis!!
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 26 juil. 2006 à 16:11
Re,
Résumé:
Pour le CommanDialog, j'ai été un très mauvais conseiller !!!
C'est joli, mais chiant à mettre en prod.
Avec le CommanDialog, il est possible d'afficher seulement les folders
(les fichiers ne sont pas affichés)...mais je ne retrouve pas cet exemple.
Hitch16
Messages postés78Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention 6 octobre 2008 26 juil. 2006 à 16:31
Nan nan JMO, merci à toi, ça m'a permis de me prendre le
choux dessus, d'apprendre à m'en servir et surtout de savoir que
c'était compatible VBScript !!!