Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    [VBS] Sostituire stringa utilizzando RegEx in un file di testo

    Ciao a tutti.

    Il file di testo expiration.txt contiene 197.015 righe.

    Per ciascuna riga ho la necessità di sostituire :

    1. 2020-03-01 13:33 >>> 2020-03-01
    2. 2020-02-01 08:45 >>> 2020-02-01
    3. 2020-01-01 11:30 >>> 2020-01-01
    4. ...
    5. ...
    6. 2018-01-01 12:40 >>> 2018-01-01 (questa è l'ultima riga numero 197.015 )


    Questo è il codice che sto provando, che però non funziona.

    Non dà errori, ma la sostituzione non avviene, il file rimane nel formato iniziale.

    Come posso risolvere.

    Grazie.

    codice:
    [COLOR=var(--blue-800)]Const[/COLOR][COLOR=var(--black-750)] ForReading [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]1[/COLOR]
    codice:
    [COLOR=var(--blue-800)]Const[/COLOR][COLOR=var(--black-750)] ForWriting [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]2[/COLOR][COLOR=var(--black-750)]
    intCount [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]0[/COLOR][COLOR=var(--black-750)]
    intIndex [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]1[/COLOR][COLOR=var(--black-750)]
    [/COLOR][COLOR=var(--blue-800)]Set[/COLOR][COLOR=var(--black-750)] oFSO [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] CreateObject[/COLOR][COLOR=var(--black-750)]([/COLOR][COLOR=var(--red-800)]"Scripting.FileSystemObject"[/COLOR][COLOR=var(--black-750)])[/COLOR][COLOR=var(--black-750)]
    str_input [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]""[/COLOR][COLOR=var(--black-750)]
    [/COLOR][COLOR=var(--blue-800)]Set[/COLOR][COLOR=var(--black-750)] oInFile [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] oFSO[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]OpenTextFile[/COLOR][COLOR=var(--black-750)]([/COLOR][COLOR=var(--red-800)]"expiration.txt"[/COLOR][COLOR=var(--black-750)],[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]1[/COLOR][COLOR=var(--black-750)])[/COLOR][COLOR=var(--black-750)]
    str_input [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] oInFile[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]ReadAll[/COLOR][COLOR=var(--black-750)]()[/COLOR][COLOR=var(--black-750)]
    [/COLOR][COLOR=var(--blue-800)]Set[/COLOR][COLOR=var(--black-750)] oRegEx [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] CreateObject[/COLOR][COLOR=var(--black-750)]([/COLOR][COLOR=var(--red-800)]"VBScript.RegExp"[/COLOR][COLOR=var(--black-750)])[/COLOR][COLOR=var(--black-750)]
    [/COLOR][COLOR=var(--blue-800)]With[/COLOR][COLOR=var(--black-750)] oRegEx
        [/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]Multiline [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]True[/COLOR][COLOR=var(--black-750)]
        [/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]Global [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]True[/COLOR][COLOR=var(--black-750)]
        [/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]Pattern [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]"(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+);"[/COLOR][COLOR=var(--black-750)]
    [/COLOR][COLOR=var(--blue-800)]End[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--blue-800)]With[/COLOR][COLOR=var(--black-750)]
    [/COLOR][COLOR=var(--blue-800)]Do[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--blue-800)]Until[/COLOR][COLOR=var(--black-750)] oInFile[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]AtEndOfStream
    str_input [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] oInFile[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]ReadLine
    [/COLOR][COLOR=var(--blue-800)]If[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--black-750)]([/COLOR][COLOR=var(--black-750)]intCount [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]0[/COLOR][COLOR=var(--black-750)])[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--blue-800)]Then[/COLOR][COLOR=var(--black-750)]
       str_input [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] oRegEx[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]Replace[/COLOR][COLOR=var(--black-750)]([/COLOR][COLOR=var(--black-750)]str_input[/COLOR][COLOR=var(--black-750)],[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]"$1-$2-$3;"[/COLOR][COLOR=var(--black-750)])[/COLOR][COLOR=var(--black-750)]
       [/COLOR][COLOR=var(--blue-800)]Set[/COLOR][COLOR=var(--black-750)] oInFile [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] oFSO[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]OpenTextFile[/COLOR][COLOR=var(--black-750)]([/COLOR][COLOR=var(--red-800)]"expiration.txt"[/COLOR][COLOR=var(--black-750)],[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]2[/COLOR][COLOR=var(--black-750)])[/COLOR][COLOR=var(--black-750)]
       oInFile[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]Write str_input
       oInFile[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]Close
    [/COLOR][COLOR=var(--blue-800)]End[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--blue-800)]If[/COLOR][COLOR=var(--black-750)]
    intCount [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] intCount [/COLOR][COLOR=var(--black-750)]+[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]1[/COLOR][COLOR=var(--black-750)]
    [/COLOR][COLOR=var(--blue-800)]If[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--black-750)]([/COLOR][COLOR=var(--black-750)]intCount [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]200[/COLOR][COLOR=var(--black-750)])[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--blue-800)]Then[/COLOR][COLOR=var(--black-750)]
        intCount [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]0[/COLOR][COLOR=var(--black-750)]
        intIndex [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)] intIndex [/COLOR][COLOR=var(--black-750)]+[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]1[/COLOR][COLOR=var(--black-750)]
        oInFile[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]Close
    [/COLOR][COLOR=var(--blue-800)]End[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--blue-800)]If[/COLOR][COLOR=var(--black-750)]
    [/COLOR][COLOR=var(--blue-800)]Loop[/COLOR][COLOR=var(--black-750)]
    oInFile[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]Close
    [/COLOR][COLOR=var(--blue-800)]set[/COLOR][COLOR=var(--black-750)] oFSO [/COLOR][COLOR=var(--black-750)]=[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--red-800)]nothing[/COLOR][COLOR=var(--black-750)][/COLOR][COLOR=var(--black-750)]WScript[/COLOR][COLOR=var(--black-750)].[/COLOR][COLOR=var(--black-750)]echo [/COLOR][COLOR=var(--red-800)]"ok"[/COLOR]

    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,328
    Il codice è illeggibile

    Comunque la data/ora si trova sempre all'inizio della riga?
    Ultima modifica di oregon; 28-03-2020 a 20:22
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Quando provo ad accedere con Chorme, mi dà questo errore e non mi fa andare avanti :


    Messaggio vBulletin

    Un campo obbligatorio chiamato ip è mancante o ha un valore non valido.



    L'unico modo è stato cambiare browser (Edge) e inserire una risposta al topic.

    Questo è il codice :

    codice:
    Const ForReading = 1
    Const ForWriting = 2
    intCount = 0
    intIndex = 1
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    str_input = ""
    Set oInFile = oFSO.OpenTextFile("expiration.txt", 1)
    str_input = oInFile.ReadAll()
    Set oRegEx = CreateObject("VBScript.RegExp")
    With oRegEx
        .Multiline = True
        .Global = True
        .Pattern = "(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+);"
    End With
    Do Until oInFile.AtEndOfStream
    str_input = oInFile.ReadLine
    If (intCount = 0) Then
       str_input = oRegEx.Replace(str_input, "$1-$2-$3;")
       Set oInFile = oFSO.OpenTextFile("expiration.txt", 2)
       oInFile.Write str_input
       oInFile.Close
    End If
    intCount = intCount + 1
    If (intCount = 200) Then
        intCount = 0
        intIndex = intIndex + 1
        oInFile.Close
    End If
    Loop
    oInFile.Close
    set oFSO = nothing
    WScript.echo "ok"
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,715
    Quando provo ad accedere con Chorme, mi dà questo errore e non mi fa andare avanti :
    Grazie per la segnalazione, la riferisco all'amministrazione
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 20% tra i post del forum; il 15% sul web.
    Ti resta... humm spè

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  5. #5
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Il codice è illeggibile

    Comunque la data/ora si trova sempre all'inizio della riga?
    Grazie

    Riesco ad accedere correttamente solo dallo Smartphone.
    Dal pc praticamente impossibile con qualsiasi browser.

    La risposta alla tua domanda è no.
    La data non è mai all'inizio della riga.

    Purtroppo dallo Smartphone non posso postare il tracciato record.
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  6. #6
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Il codice è illeggibile

    Comunque la data/ora si trova sempre all'inizio della riga?
    Tracciato record :

    codice:
    foo1; 2020-03-01 13:33;
    foo2; 2020-02-01 08:45;
    foo3; 2020-01-01 11:30;
    ...
    ...
    ...
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,328
    Ok, non è all'inizio, ma sempre il secondo campo come hai mostrato?

    Se è così, puoi usare questa versione di codice (la tua tenta di scrivere nel file di input ...)

    codice:
    Const ForReading = 1
    str_input = ""
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oInFile = oFSO.OpenTextFile("test.txt", ForReading)
    Set oOutFile = oFSO.CreateTextFile("test2.txt", True)
    Do Until oInFile.AtEndOfStream
    	str_input = oInFile.ReadLine
    	flds = Split(str_input, ";")
    	flds(1) = Trim(Left(flds(1), len(flds(1))-5))
    	for each f in flds
    		oOutFile.Write f & ";"
    	next 
    	oOutFile.WriteLine 
    Loop
    oInFile.Close
    oOutFile.Close
    set oFSO = nothing
    WScript.echo "ok"
    Ultima modifica di oregon; 28-03-2020 a 23:47
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ok, non è all'inizio, ma sempre il secondo campo come hai mostrato?

    Se è così, puoi usare questa versione di codice (la tua tenta di scrivere nel file di input ...)

    codice:
    Const ForReading = 1
    str_input = ""
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oInFile = oFSO.OpenTextFile("test.txt", ForReading)
    Set oOutFile = oFSO.CreateTextFile("test2.txt", True)
    Do Until oInFile.AtEndOfStream
    	str_input = oInFile.ReadLine
    	flds = Split(str_input, ";")
    	flds(1) = Trim(Left(flds(1), len(flds(1))-5))
    	for each f in flds
    		oOutFile.Write f & ";"
    	next 
    	oOutFile.WriteLine 
    Loop
    oInFile.Close
    oOutFile.Close
    set oFSO = nothing
    WScript.echo "ok"
    Grazie

    Errore ;
    Indice non incluso nell intervallo
    Alla riga flds(1) = ....

    Scusa ma ti rispondo dallo Smartphone
    Dal pc non riesco ad accedere al forum
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,328
    Hai detto che la riga tipo è

    foo1; 2020-03-01 13:33;

    ma dall'errore si capisce che esistono righe fatte diversamente.

    Devi dirci se ci sono eccezioni a questo formato record
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Sempre da smartphone
    Le righe sono quelle che ho postato nel primo msg
    Ho provato a ridurre il numero delle righe ma da lo stesso errore
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.