IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

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


Sujet :

VBScript

  1. #1
    Invité
    Invité(e)
    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
    9 468
    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 : 9 468
    Points : 18 677
    Points
    18 677
    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, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Invité
    Invité(e)
    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é.
    Dernière modification par Invité ; 27/10/2017 à 13h23.

  4. #4
    Invité
    Invité(e)
    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
    9 468
    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 : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Le fichier restant ouvert tant que l'instruction Close n'est pas déclenchée …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Invité
    Invité(e)
    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)
    Dernière modification par Invité ; 28/10/2017 à 16h56.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Il semble que l’utilisation de WScript Shell soit la solution appropriée.
    Dernière modification par Invité ; 31/10/2017 à 14h48.

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 18/08/2014, 15h17
  2. Réponses: 15
    Dernier message: 18/07/2014, 10h29
  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, 15h15
  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, 18h19

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