ziocan
06-10-2017, 08:34
Buon Giorno a tutti..
non sono propriamente un programmatore/scripter ma diciamo che sono uno smanettone che per quel poco che gli serve un po ci capisce..
Vi illustro un po la mia necessità.
Dispongo di una stazione meteo che mi genera un output in un formato separato da virgole come questo:
2017-10-06,09:19:30.00,C,K,-00.0,20.6,00.0,6.1,74,15.8,3,0,0,0,0,0,0,0,0,0,0
Il driver del mio osservatorio astronomico per interpretare questa riga ha bisogno che sia formattato in "colonne a larghezza fissa" come questo:
2017-10-06 09:16:10.00 C K -00.0 20.3 00.0 6.1 75 15.7 3 0 0 0 0 0 0 0 0 0
non sto a scrivervi tutte le specifiche (da carattere a carattere corrisponde, ecc), ma cosi l'ho testato e funziona
Per passare dal testo separato da virgole a testo in colonne googlando sono arrivato a un topic di StackOverFlow dove veniva illustrato questo script powershell:
>output.txt powershell "Get-Content input.txt | %%{'{0,-11}{1,-12}{2,-2}{3,-2}{4,-7}{5,-7}{6,-7}{7,-7}{8,-4}{9,-7}{10,-4}{11,-2}{12,-2}{13,-6}{14,-13}{15,-2}{16,-2}{17,-2}{18,-2}{19}' -f $_.split(',')}"
Lo script è inserito all'interno di un batch cmd che fa un loop ogni 180 secondi per aggiornare i dati.. fa quel che deve fare.. con un problema però.. l'output che restituisce dopo 79 caratteri a un certo punto va a capo e il driver che deve interpretarlo ovviamente impazzisce e non riconosce piu la stringa.. questo è un output che genera:
2017-10-06 09:28:05.00 C K -00.0 19.9 00.0 7.2 73 14.9 3 0 0 0
0 0 0 0 0 0
se cancello un carattere e porto tutto su una riga la stringa viene perfettamente riconosciuta e tutto funziona perfettamente..
Come ho premesso.. di programmazione ne so poco.. ho fatto qualche prova (-width 1000) ma andare alla cieca per tentativi su powershell vuol dire letteralmente impazzire e perdersi nella montagna di comandi da concatenare.. C'è qualche anima pia che mi puo dare una mano?
Grazie in anticipo
non sono propriamente un programmatore/scripter ma diciamo che sono uno smanettone che per quel poco che gli serve un po ci capisce..
Vi illustro un po la mia necessità.
Dispongo di una stazione meteo che mi genera un output in un formato separato da virgole come questo:
2017-10-06,09:19:30.00,C,K,-00.0,20.6,00.0,6.1,74,15.8,3,0,0,0,0,0,0,0,0,0,0
Il driver del mio osservatorio astronomico per interpretare questa riga ha bisogno che sia formattato in "colonne a larghezza fissa" come questo:
2017-10-06 09:16:10.00 C K -00.0 20.3 00.0 6.1 75 15.7 3 0 0 0 0 0 0 0 0 0
non sto a scrivervi tutte le specifiche (da carattere a carattere corrisponde, ecc), ma cosi l'ho testato e funziona
Per passare dal testo separato da virgole a testo in colonne googlando sono arrivato a un topic di StackOverFlow dove veniva illustrato questo script powershell:
>output.txt powershell "Get-Content input.txt | %%{'{0,-11}{1,-12}{2,-2}{3,-2}{4,-7}{5,-7}{6,-7}{7,-7}{8,-4}{9,-7}{10,-4}{11,-2}{12,-2}{13,-6}{14,-13}{15,-2}{16,-2}{17,-2}{18,-2}{19}' -f $_.split(',')}"
Lo script è inserito all'interno di un batch cmd che fa un loop ogni 180 secondi per aggiornare i dati.. fa quel che deve fare.. con un problema però.. l'output che restituisce dopo 79 caratteri a un certo punto va a capo e il driver che deve interpretarlo ovviamente impazzisce e non riconosce piu la stringa.. questo è un output che genera:
2017-10-06 09:28:05.00 C K -00.0 19.9 00.0 7.2 73 14.9 3 0 0 0
0 0 0 0 0 0
se cancello un carattere e porto tutto su una riga la stringa viene perfettamente riconosciuta e tutto funziona perfettamente..
Come ho premesso.. di programmazione ne so poco.. ho fatto qualche prova (-width 1000) ma andare alla cieca per tentativi su powershell vuol dire letteralmente impazzire e perdersi nella montagna di comandi da concatenare.. C'è qualche anima pia che mi puo dare una mano?
Grazie in anticipo