1. #1
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 101
    Points : 54
    Points
    54

    Par défaut VBS lecture fichier texte du même répertoire que le script + écriture.

    Bonjour, Bonsoir ou bonne nuit

    Avec le code ci-dessous, je lis un fichier texte placé ds le même répertoire que le script.

    J’aimerais qu’après le traitement les modifications soient écrites :
    1- Soit dans un autre fichier texte tout en empêchant l’écrasement du fichier source et l’utilisation du même nom.
    2- Soit en empêchant l’enregistrement de ce fichier modifié "le fermer après exploitation sans l’enregistrer".

    Avez-vous une idée ?

    PS: mon but est de protéger le fichier source contre la modification depuis le script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Option Explicit
     
    Function searchReplaceFile(File,StringSearch,StringReplace)
     
    	Dim FileSystemObject
     
    	Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
     
    	if FileSystemObject.FileExists(File) = true Then
     
    		Dim oRegEx, MyFile, sStream, sNewStream
     
    		Set oRegEx = New RegExp
     
    		oRegEx.Global = True
    		oRegEx.Pattern = StringSearch
     
    		Set MyFile = FileSystemObject.OpenTextFile(File,1)
     
    		sStream = MyFile.ReadAll
    		MyFile.Close
     
    		sNewStream = oRegEx.Replace(sStream,StringReplace)
     
    		if InStr(sNewStream,StringReplace) = true Then 
    			sNewStream = Replace(sNewStream,StringReplace,1,1) 
    		end if
     
    		Set MyFile = FileSystemObject.OpenTextFile(File,2,true)
    		MyFile.Write sNewStream
    	 	MyFile.Close
    		MsgBox "Modification terminé",vbInformation,"Succès"
    	else
    		MsgBox "Le fichier source est introuvable",Vbcritical,"Erreur"
    	end if
    end Function
     
    Dim DossProg, MonFichierTxt, StringReplaceValue 
     
    DossProg = replace(WScript.ScriptFullName,WScript.ScriptName,"")
    MonFichierTxt = DossProg & "fichier.txt"
     
    StringReplaceValue = InputBox ("Entrer l'identifiant de messagerie.","My messenger")
    searchReplaceFile (MonFichierTxt),"prenom.nom@hotmail.com",(StringReplaceValue & "@monsite.org")

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2013
    Messages
    8 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 8 662
    Points : 17 203
    Points
    17 203

    Par défaut


    Bonjour,

    donc ce n'est pas ton code car il suffit juste d'y modifier le nom du fichier créé en ligne n°29 …

    ___________________________________________________________________________________________________________
    Je suis Paris, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    . . . . . Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !

  3. #3
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 101
    Points : 54
    Points
    54

    Par défaut

    Bonjour,
    C'est pourtant si simple, le fait de modifier la ligne 29, modifie la variable "File" de la fonction searchReplaceFile et défini le nom du 2eme fichier etc…
    Je suis vraiment un boulet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Option Explicit
     
    Function searchReplaceFile(MonFichierTxt1,StringSearch,StringReplace)
     
    	Dim FileSystemObject
     
    	Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
     
    	if FileSystemObject.FileExists(MonFichierTxt1) = true Then
     
    		Dim oRegEx, MyFile, sStream, sNewStream
     
    		Set oRegEx = New RegExp
     
    		oRegEx.Global = True
    		oRegEx.Pattern = StringSearch
     
    		Set MyFile = FileSystemObject.OpenTextFile(MonFichierTxt1,1)
     
    		sStream = MyFile.ReadAll
    		MyFile.Close
     
    		sNewStream = oRegEx.Replace(sStream,StringReplace)
     
    		if InStr(sNewStream,StringReplace) = true Then 
    			sNewStream = Replace(sNewStream,StringReplace,1,1) 
    		end if
     
    		Set MyFile = FileSystemObject.OpenTextFile(MonFichierTxt2,2,true)		
    		'Set MyFile = FileSystemObject.OpenTextFile(File,2,true)
    		MyFile.Write sNewStream
    	 	MyFile.Close
    		MsgBox "Modification terminé",vbInformation,"Succès"
    	else
    		MsgBox "Le fichier source est introuvable",Vbcritical,"Erreur"
    	end if
    end Function
     
    Dim DossProg, MonFichierTxt1, MonFichierTxt2, StringReplaceValue 
     
    DossProg = replace(WScript.ScriptFullName,WScript.ScriptName,"")
    MonFichierTxt1 = DossProg & "fichier.txt"
    MonFichierTxt2 = DossProg & "fichier2.txt"
     
    StringReplaceValue = InputBox ("Entrer l'identifiant de messagerie.","My messenger")
    searchReplaceFile (MonFichierTxt2),"prenom.nom",(StringReplaceValue)
    Je pensais à une solution un peux plus aboutie, qui ouvrirait automatiquement ce 2eme fichier sans qu'il existe et être obligé de l'enregistrer.
    Je ne sais pas si je me suis bien fait comprendre?
    Là ça répond à mon choix 1 qui en fait n'est pas approprié.

  4. #4
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 101
    Points : 54
    Points
    54

    Par défaut

    Bonsoir,
    Ré-écriture et re-nommage des variables pour plus de clarté.
    Teste de la présence du fichier de sortie et création si il n’existe pas.
    Je bute sur un point qui va surement vous sembler tout bête :
    Comment gérer la visualisation du fichier de sortie "faire qu’il reste ouvert après création et écriture" ?
    L’ouvrir une nouvelle fois ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
     
    Function SearchReplaceStr(OutputFile,StrSearch,StrReplace)
     
    	Dim Fso 
     
    	Set Fso = CreateObject("Scripting.FileSystemObject")
    	If Fso.FileExists(InputFile) = True Then	 
     
    		Dim oRegEx, MyFile, sStream, sNewStream		
     
    		Set oRegEx = New RegExp 
    		oRegEx.Global = True
    		oRegEx.Pattern = StrSearch 
     
    		Set MyFile = Fso.OpenTextFile(InputFile,1) 
    		sStream = MyFile.ReadAll
    		MyFile.Close
     
    		sNewStream = oRegEx.Replace(sStream,StrReplace)
     
    		If InStr(sNewStream,StrReplace) = True Then 
    			sNewStream = Replace(sNewStream,StrReplace,1,1) 
    		End If
     
     		If Not (Fso.FileExists(OutputFile)) Then Fso.CreateTextFile(OutputFile)
    		Set MyFile = Fso.OpenTextFile(OutputFile,2)	
    		MyFile.Write sNewStream
    	 	MyFile.Close
    		MsgBox "Modification terminé",vbInformation,"Succès"
    	Else	
    		MsgBox "Le fichier source est introuvable",Vbcritical,"Erreur"	
    	End If	
     
    End Function
     
    Dim DossProg, InputFile, OutputFile, InputStrValue
     
    DossProg = replace(WScript.ScriptFullName,WScript.ScriptName,"")
    InputFile = DossProg & "source\SourceFile.txt"
    OutputFile = DossProg & "PowerSchell.txt"
     
    InputStrValue = InputBox ("Entrer l'identifiant a router." & vbNewLine & _
    							vbNewLine & "Il doit être  de type:" & _ 
    							vbNewLine & "prenom.nom" & _
    							vbNewLine & "ou" & _
    							vbNewLine & "service.fonction" & vbNewLine,"My messenger")
    SearchReplaceStr (OutputFile),"prenom.nom",(InputStrValue)

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2013
    Messages
    8 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 8 662
    Points : 17 203
    Points
    17 203

    Par défaut





    Le fichier restant ouvert tant que l'instruction Close n'est pas déclenchée …
    . . . . . Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !

  6. #6
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 101
    Points : 54
    Points
    54

    Par défaut

    Bonjour,
    Encore une fois je m’exprime mal.
    Je parle d’une ouverture en visuel de mon fichier texte.

    C’est Ok avec l’Object Shell, mais tout cela est-il bien propre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Option Explicit
     
    Function SearchReplaceStr(OutputFile,StrSearch,StrReplace)
     
    	Dim ObjShell, Fso 
    	Set objShell = CreateObject("WScript.Shell") 
    	Set Fso = CreateObject("Scripting.FileSystemObject")
    	If Fso.FileExists(InputFile) = True Then	 
     
    		Dim oRegEx, MyFile, sStream, sNewStream		
     
    		Set oRegEx = New RegExp 
    		oRegEx.Global = True
    		oRegEx.Pattern = StrSearch 
     
    		Set MyFile = Fso.OpenTextFile(InputFile,1) 
    		sStream = MyFile.ReadAll
    		MyFile.Close
     
    		sNewStream = oRegEx.Replace(sStream,StrReplace)
     
    		If InStr(sNewStream,StrReplace) = True Then 
    			sNewStream = Replace(sNewStream,StrReplace,1,1) 
    		End If
     
     		If Not (Fso.FileExists(OutputFile)) Then Fso.CreateTextFile(OutputFile)
    		Set MyFile = Fso.OpenTextFile(OutputFile,2)	
    		MyFile.Write sNewStream
    	 	MyFile.Close
    	 	objShell.Run("notepad " & OutputFile)
    '		MsgBox "Modification terminé",vbInformation,"Succès"
    	Else	
    		MsgBox "Le fichier source est introuvable",Vbcritical,"Erreur"	
    	End If	
     
    End Function
     
    Dim DossProg, InputFile, OutputFile, InputStrValue
     
    DossProg = replace(WScript.ScriptFullName,WScript.ScriptName,"")
    InputFile = DossProg & "source\SourceFile.txt"
    OutputFile = DossProg & "PowerSchell.txt"
     
    InputStrValue = InputBox ("Entrer l'identifiant a router." & vbNewLine & _
    							vbNewLine & "Il doit être de type:" & _ 
    							vbNewLine & "prenom.nom" & _
    							vbNewLine & "ou" & _
    							vbNewLine & "service.fonction" & vbNewLine,"My messenger")
    SearchReplaceStr (OutputFile),"prenom.nom",(InputStrValue)

  7. #7
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 101
    Points : 54
    Points
    54

    Par défaut

    Bonsoir,
    Il semble que l’utilisation de WScript Shell soit la solution appropriée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 18/08/2014, 16h17
  2. Réponses: 15
    Dernier message: 18/07/2014, 11h29
  3. [XL-2007] FSO TextStream - Créer un fichier txt dans le même répertoire que le classeur Excel
    Par Sclarckone dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/12/2010, 16h15
  4. [VBS] Executer un fichier dans le même répertoire
    Par TGV6773 dans le forum VBScript
    Réponses: 4
    Dernier message: 22/03/2010, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo