|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 298
|
[VBS / BATCH] Formattare testo
Ciao a tutti ...
Vorrei sapere se esiste un modo (immagino di si solo che non riesco a capire come) per formattare un file di testo con una logica precisa. Mi spiego meglio, io ho un file di testo del tipo: FAILED STRINGACHEMISERVE 123456 78979 4656666 Da cui vorrei eliminare tutto tranne appunto "STRINGACHEMISERVE" . Il file è sempre di questo formato, l'unica cosa che cambiano sono i numeri perchè sono numeri progressivi che cambiano di volta in volta. Cmq si può dire che a me basterebbe eliminare tutto ciò che c'è prima del primo spazio e tutto ciò che c'è dopo il secondo spazio in modo da avere sempre e solo la parte che mi interessa. Spero di essere stato abbastanza chiaro. Se ci son problemi fatemi sapere che cercherò di essere più esaustivo! Grazie a tutti anticipatamente.
__________________
Mobile: iPhone 5 Tablet: Mediacom 102 s2 E-reader: Amazon Kindle 3 Netbook: Acer Aspire One D570 Notebook: Dell Studio 1558, Sony Vaio VGN-FZ21M Console: Xbox 360, Nintendo Wii, Nintendo DS, Sony PSP Desktop: AMD Opteron180 2x 2.4Ghz, ASUS A8N SLI-DELUXE, GEFORCE 6600GT, 2GB RAM |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 298
|
Ho provato a capire e seguire la guida ma con scarsissimo risultato...
Nessuno ha qualche idea su come fare?? Spiego meglio il problema: Ricevo un file .txt scritto nel seguente formato: Running PROCEDURA1 10026547 86541 543435 Running PROCEDURA2 10026544 86542 543436 Running PROCEDURA3 10026599 86543 543437 A questo punto avrei bisogno di uno script che vada a leggere questo file e mi elimini tutto ciò che non è "PROCEDURA...X" salvandomi un nuovo file o anche sovrascrivendo in modo corretto lo stesso. Se vi può essere utile Running è l'unica parte sempre lunga uguale , mentre i nomi delle procedure ed i numeri che seguono sono sempre diversi (pur mantenendo sempre la stessa posizione) ...Grazie!!!!!!!
__________________
Mobile: iPhone 5 Tablet: Mediacom 102 s2 E-reader: Amazon Kindle 3 Netbook: Acer Aspire One D570 Notebook: Dell Studio 1558, Sony Vaio VGN-FZ21M Console: Xbox 360, Nintendo Wii, Nintendo DS, Sony PSP Desktop: AMD Opteron180 2x 2.4Ghz, ASUS A8N SLI-DELUXE, GEFORCE 6600GT, 2GB RAM |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Ti consiglierei di installare la powershell. Una volta installata, da esegui la richiami digitando powershell e ti muovi come col normale prompt dei comandi fino a raggiungere la cartella che contiene il file.
A questo punto ti basta digitare gc nome_tuo_file.txt | % {$_.split(" ")[1]} ed ottieni solo l'elenco delle procedure. In pratica usi lo spazio come separatore per crearti un array e richiami l'elemento in posizione 1 (cioè il secondo elemento). Nel caso voglia generare un nuovo file di testo basta che redirezioni l'output. gc nome_tuo_file.txt | % {$_.split(" ")[1]} > nuovo.txt Spero di esserti stato utile. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 298
|
Grazie 1000 sei stato gentilissimo! Il tuo script funziona alla perfezione ma ho un ultimo "problemino" ... ho notato infatti che quando ricevo questo file gli spazi tra una parola non sono formattati correttamente!
Non capisco il perchè ma ti faccio un esempio... Ho il file così: Running procedura1 123 1415 66 777 Running procedura2 123 1415 66 778 Se lancio lo script così , non funziona... Se invece da notepad o ultraedit mi posiziono davanti a procedura1 con il cursore, cancello lo spazio (che comunque è solo uno) e lo ricreo (click su barra spaziatrice) allora funziona tutto alla perfezione! (stessa cosa con i numeri che seguono) A questo punto, ti/vi chiedo se esiste un altro script in grado di formattare meglio il testo, eliminando eventuali spazi di troppo o comunque ricreando gli spazi in un formato "standard" Grazie ancora ...
__________________
Mobile: iPhone 5 Tablet: Mediacom 102 s2 E-reader: Amazon Kindle 3 Netbook: Acer Aspire One D570 Notebook: Dell Studio 1558, Sony Vaio VGN-FZ21M Console: Xbox 360, Nintendo Wii, Nintendo DS, Sony PSP Desktop: AMD Opteron180 2x 2.4Ghz, ASUS A8N SLI-DELUXE, GEFORCE 6600GT, 2GB RAM |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Lo script cerca lo spazio come separatore, e se non c'è veramente un carattere di spazio... picche! |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Quote:
Ciao. Cosa intendi per non funziona? Ho fatto una prova inserendo vari spazi e tabulazioni e con questo codice sembra funzionare tutto bene. gc tuo_file.txt | % {$_ -replace "\t+|\s+"," "} | % {$_.split(" ")[1]} Facci sapere Ultima modifica di john_revelator : 02-04-2008 alle 15:59. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 298
|
6 un grande!!
Funziona pefettamente Mi puoi solo spiegare meglio lo scritp ? gc tuo_file.txt | % {$_ -replace "\t+|\s+"," "} | % {$_.split(" ")[1]} Praticamente gli dici replace tutte le tabulazioni (\t) e tutti gli spazi (\s) in eccesso ? Sto cercando di entrare adesso nel "mondo" della powershell e ancora non ci capisco gran chè! thxxxx PS: ho provato a fare un file .bat con il comando di cui sopra ma il batch non va... Con la powershell funziona in modo diverso ?
__________________
Mobile: iPhone 5 Tablet: Mediacom 102 s2 E-reader: Amazon Kindle 3 Netbook: Acer Aspire One D570 Notebook: Dell Studio 1558, Sony Vaio VGN-FZ21M Console: Xbox 360, Nintendo Wii, Nintendo DS, Sony PSP Desktop: AMD Opteron180 2x 2.4Ghz, ASUS A8N SLI-DELUXE, GEFORCE 6600GT, 2GB RAM Ultima modifica di Gentoooo : 03-04-2008 alle 08:21. |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Quote:
gc è un alias di get-content e serve per vedere il contenuto del file. Tramite la pipe (|) il comando get-content viene passato all'istruzione successiva. Il simbolo di % è la forma contratta del cmdlet foreach-object e serve per ciclare ciascuna riga del file. $_ indica l'oggetto corrente (in questo caso quindi la riga in esame) alla quale si applica il replace di una o più occorrenze del carattere di tabulazione e del carattere spazio con un singolo spazio. Tramite la pipe successiva, una volta effettuata la sostituzione, si cicla ancora il file modificato e si "splitta" il contenuto in base al carattere spazio recuperando il secondo elemento dell'array. Per quanto riguarda il batch ricordo di aver letto che fosse possibile richiamare la powershell anche tramite file .bat ma non ricordo come. (Sono agli inizi anch'io con questo bel giocattolino Prova a fare una ricerca su google, magari quando ho un attimo di tempo lo faccio anch'io. |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 298
|
Perfetto mi è tutto MOOOLTO più chiaro!
Mi sono scaricato il manuale e la powergui e sto cercando di capirne sempre di più.. grazie ancora so su chi poter contare nel caso avessi ancora bisogno ciao
__________________
Mobile: iPhone 5 Tablet: Mediacom 102 s2 E-reader: Amazon Kindle 3 Netbook: Acer Aspire One D570 Notebook: Dell Studio 1558, Sony Vaio VGN-FZ21M Console: Xbox 360, Nintendo Wii, Nintendo DS, Sony PSP Desktop: AMD Opteron180 2x 2.4Ghz, ASUS A8N SLI-DELUXE, GEFORCE 6600GT, 2GB RAM |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:51.




















