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]Question sur script et fichier [Débutant(e)]


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [VBS]Question sur script et fichier
    Bonjour,

    j'ai trouvé ceci sur un forum (conversion ansi vers utf):
    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
    Const adTypeBinary = 1
    Const adTypeText   = 2
    Const bOverwrite   = True
    Const bAsASCII     = False
     
    Dim oFS     : Set oFS    = CreateObject( "Scripting.FileSystemObject" )
     
    Dim sFFSpec : sFFSpec    = oFS.GetAbsolutePathName( "fic.txt" )
    Dim sTFSpec : sTFSpec    = oFS.GetAbsolutePathName( "fic.new.txt" )
     
    Dim oFrom   : Set oFrom  = CreateObject( "ADODB.Stream" )
    Dim sFrom   : sFrom      = "Windows-1252"
    Dim oTo     : Set oTo    = CreateObject( "ADODB.Stream" )
    Dim sTo     : sTo        = "utf-8"
     
    If oFS.FileExists( sTFSpec ) Then oFS.DeleteFile sTFSpec
     
    oFrom.Type    = adTypeText
    oFrom.Charset = sFrom
    oFrom.Open
    oFrom.LoadFromFile sFFSpec
     
    oTo.Type    = adTypeText
    oTo.Charset = sTo
    oTo.Open
    oTo.WriteText oFrom.ReadText
    oTo.SaveToFile sTFSpec
     
    oFrom.Close
    oTo.Close
    Le petit changement qu'il me faudrais c'est ne pas saisir le nom du fichier dans le code, mais prendre celui du fichier (ou des fichiers) que je glisse sur le vbs?
    Et aussi avoir une "variable" pour le nom de destination qui soit le nom d'origine avec .new et l'extension d'origine (comme dans mon example).

    J'espère avoir été clair dans ma demande

    Merci par avance.

    P.S: désolé pour cette grosse question de noob m'ais je n'y connais rien en vbs

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    Le petit changement qu'il me faudrais c'est ne pas saisir le nom du fichier dans le code, mais prendre celui du fichier (ou des fichiers) que je glisse sur le vbs?

    je suppose que tu veux que l'utilisateur puisse sélectionner un fichier quelconque, alors c'est ici
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sFic=GetFileNameDlg()
    pp=InStrRev(sFic,".")
    sNewFic=Left(sFic,pp) & "new" & Mid(sFic,pp)
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Heu.... ont s'est pas compris.
    C'est plutôt quelque chose comme "FilesToProcess()" et une boucle "For Each file in FilesToProcess" qu'il me faut (d'après ce que j'ai pus voir).

    Actuellement le vbs n'est valable que pour un fichier.
    Moi j'aimerais qu'il fonctionne avec n'importe quel fichier fichier avec un appel en batch du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\windows\system32\cscript.exe traitement.vbs "%%a"
    Petite mise au point ; dans le nom du fichier je peut avoir des points. Par exemple : fic.numero.un.txt

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    si sDataFichier est le contenu d'un fichier listant ligne par ligne le nom des fichiers à traiter :
    (marche aussi si sDataFichier est un tableau)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim FilesToProcess
    'FilesToProcess=Array("fic12.numero.un.txt","fic12.numero.deux.txt","fic12.numero.trois.txt")
    sDataFichier="fic12.numero.un.txt"&vbCrLf&"fic12.numero.deux.txt"&vbCrLf&"fic12.numero.trois.txt"
    FilesToProcess=Split(sDataFichier,vbCrLf)
    For Each sfile In FilesToProcess
    	pp=InStrRev(sfile,".")
    	sNewfile=Left(sfile,pp) & "new" & Mid(sfile,pp)
    	msgbox sNewfile
    Next
    Petite mise au point ; dans le nom du fichier je peut avoir des points. Par exemple : fic.numero.un.txt
    j'en avais tenu compte d'où le InStrRev
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Purée, ça se vois que j'y connais rien.....
    Non, pas de tableau ni de fichier avec le nom des fichiers à traiter.

    Voici un vbs que j'utilise (pas de moi bien sur) qui fait ce qu'il me faut comme boucle sur les fichiers :
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Dim Extensions        ' Extensions of the files to be processed
    Dim FilesToProcess()  ' Files to be processed
    Dim PatternsNoTag
     
    PatternsNoTag = Array(Array("<.*?>", ""))
     
    Extensions=""\.txt|\.nfo""
     
    Set objArgs = WScript.Arguments
     
    i = 0
    j = 0
     
    Set objRE = New RegExp
    objRE.IgnoreCase = True
    objRE.Pattern = Extensions
     
    Set reTags = New RegExp
    reTags.Global  = True
     
    ' See what file we need to process
    ReDim FilesToProcess(WScript.Arguments.Count - 1)
    Do While i <= WScript.Arguments.Count - 1
        arg = WScript.Arguments.Item(i)
     
        Set Matches = objRE.Execute(arg)
     
        For Each Match In Matches
            If Match.firstIndex > 0 Then
                FilesToProcess(j) = arg
                j = j + 1
            End If
        Next
     
        i = i+ 1
    Loop
     
    ' Make a backup (named after the filename + ".bak") 
    For Each file in FilesToProcess
        If StrComp(file, "") <> 0 Then
            Set objInputFSO   = CreateObject("Scripting.FileSystemObject")
            objInputFSO.CopyFile file, file & ".bak"
            objInputFSO.DeleteFile file, True
        End If
    Next
     
     
    ' Open each file and process it
    For Each file in FilesToProcess
        If StrComp(file, "") <> 0 Then
     
            fileName = objRE.Replace(file, "")
     
            'Input Files
            Set objInputFSO   = CreateObject("Scripting.FileSystemObject")
            Set objInputFile  = objInputFSO.OpenTextFile(file & ".bak")
     
    		'Out Files
            Set objOutputFSO  = CreateObject("Scripting.FileSystemObject")
            Set objOutputFileNoTag = objOutputFSO.CreateTextFile(file)
     
    		content = objInputFile.ReadAll
    		line = Split(content, vbCrLf)
    		fin = UBound(line)-1
     
    		For cpt = 0 To fin
    			outputLineNoTag = line(cpt)
    			For Each Pattern In PatternsNoTag
    				reTags.Pattern = Pattern(0)
                    outputLineNoTag = reTags.Replace(outputLineNoTag, Pattern(1))
                Next
    			objOutputFileNoTag.WriteLine(outputLineNoTag)
    		Next
    		objInputFile.Close
    		objInputFSO.DeleteFile file & ".bak", True
        End If
    Next
    J'ai essayé de l'adapter pour mes besoins mais je n'ai pas réussi
    D'où ma demande d'aide.
    En tout cas, merci omen999 pour la prise en compte de ma demande.

Discussions similaires

  1. Question sur script de sauvegarde en shell
    Par zyriuse dans le forum Linux
    Réponses: 4
    Dernier message: 02/12/2009, 19h33
  2. Petite question sur script BAT
    Par BikerNiK dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 29/08/2008, 11h03
  3. Question sur type de fichier
    Par Kro86 dans le forum ImageJ
    Réponses: 9
    Dernier message: 08/07/2008, 09h39
  4. 3 questions sur l’importation de fichier Excel
    Par helenafr dans le forum Access
    Réponses: 5
    Dernier message: 05/04/2006, 07h38
  5. [ASP][VBS] Question sur if et false
    Par bigtoof dans le forum ASP
    Réponses: 2
    Dernier message: 18/06/2004, 16h28

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