Benvenuto su Tevac ( Log In | Registrati )
Tevac è una allegra combriccola di amici, alcuni appassionati di Mac, altri di Fotografia, o di entrambi.
Partecipa, dai vita a questa community, condividi le tue esperienze!
Non aver paura di iniziare una discussione o di rispondere ad un amico che cerca aiuto!
![]() ![]() |
21 Feb 2005, 11:45
Messaggio
#1
|
|
|
Utilizzo da Terminal questa stringa che mi restituisce alcuni dati utili sulla batteria del PowerBook.
CODICE ioreg -w0 -l | grep Capacity
E' possibile incorporare la suddetta in un AppleScript che, una volta lanciato mi restituisca una finestrella con gli stessi dati? In pratica evitare di scomodare il terminale. Magari sarebbe utile poter dare anche un layout alla finestra di risultato (intendo almeno ordinare il testo). Il max sarebbe poter esportare il risultato in un file di testo. Sono il solito "drogato" o è fattibile? |
|
|
|
|
|
|
|
21 Feb 2005, 12:05
Messaggio
#2
|
|
|
CODICE set command to "ls"
set prova to do shell script command display dialog prova eh io questo l ho provato con il comando ls e mi restituisce una finestrella con tutte le cartelle dentro la mia home... se cambi il comando "ls" in "ioreg -w0 -l | grep Capacity" dovrebbe andare ma nn ne sono sicuro perchè a me il comando nn va... forse dovuto al fatto che nn ho un portatile ??? -------------------- |
|
|
|
|
21 Feb 2005, 12:16
Messaggio
#3
|
|
|
Confermo che funziona:
CODICE set command to "ioreg -w0 -l | grep Capacity"
set risultato to do shell script command display dialog risultato -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
21 Feb 2005, 12:22
Messaggio
#4
|
|
|
Lo script l'ho un pò modificato e funziona. Ve lo riporto.
CODICE set Info_Battery to (do shell script "ioreg -p IODeviceTree -n battery -w 0 | grep IOBatteryInfo")
display dialog Info_Battery 1) Resta da modificare 'output del testo perchè, così come viene dato ora, è un gran casino. 2) Nella finestra che appare e riporta i risultati è possibile far comparire solo il tasto Ok e non il Cancel (che hanno poi lo stesso risultato)? |
|
|
|
|
21 Feb 2005, 12:23
Messaggio
#5
|
|
|
CITAZIONE(marcocoisson) Confermo che funziona:
CODICE set command to "ioreg -w0 -l | grep Capacity" set risultato to do shell script command display dialog risultato Usa questa di stringhe, è più rapida e non riporta il risultato raddoppiato: CODICE ioreg -p IODeviceTree -n battery -w 0 | grep IOBatteryInfo
|
|
|
|
|
21 Feb 2005, 12:38
Messaggio
#6
|
|
|
Lo script così modificato riporta il risultato in una finestra col solo pulsante OK, che è anche quello di default (selezionabile col tasto invio):
CODICE set command to "ioreg -p IODeviceTree -n battery -w 0 | grep IOBatteryInfo"
set risultato to do shell script command display dialog risultato buttons {"OK"} default button 1 Ora penso a che cosa si può fare per formattare un po' meglio l'output -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
21 Feb 2005, 12:42
Messaggio
#7
|
|
|
CITAZIONE(marcocoisson) Lo script così modificato riporta il risultato in una finestra col solo pulsante OK, che è anche quello di default (selezionabile col tasto invio):
Perfetto! CITAZIONE Ora penso a che cosa si può fare per formattare un po' meglio l'output
io su questo argomento non so proprio come operare... |
|
|
|
|
21 Feb 2005, 13:34
Messaggio
#8
|
|
|
Prova un po' così:
[quote][b]set "ioreg -p IODeviceTree -n battery -w 0 | grep IOBatteryInfo" [b]set [b]set [b]set "{" [b]set [b]set "," [b]set [b]set display dialog 1 [b]set Non ho capito quale sia la voce relativa alla carica della batteria, e ho assunto che fosse "item 1 of pezzi2"; se non lo fosse, cambi il numero dell'item -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
21 Feb 2005, 14:20
Messaggio
#9
|
|
|
Sono 1 pò titubante... viene visualizzata solo la capacità. Tutti gli altri dati non appaiono.
|
|
|
|
|
21 Feb 2005, 14:32
Messaggio
#10
|
|
|
Puoi accedere ad ogni dato con un'istruzione del tipo:
CODICE set datoCheMiInteressa to item N of pezzi2
dove N è il numero d'ordine della voce che ti interessa, e datoCheMiInteressa è una variabile in cui memorizzi questa informazione. Una volta che hai tutte le informazioni che ti servono, fai una cosa così: CODICE set messaggio to datoCheMiInteressa1 & return & datoCheMiInteressa2 & return & datoCheMiInteressa3
display dialog messaggio buttons {"OK"} default button 1 Questo dovrebbe darti tutte e sole le informazioni che ti interessato, una per riga. -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
21 Feb 2005, 14:43
Messaggio
#11
|
|
|
Faccio 1 pò di domande:
1) A cosa servono queste stringhe: CODICE set oldDel to text item delimiters
set text item delimiters to oldDel 2) E' possibile aggiungere, dopo il numero, l'unità di misura? Ora viene visualizzato (ad Es.) 4300 ed io vorrei aggiungere la rispettiva unità di misura. 3) come posso centrare il testo? [Continuo i test] |
|
|
|
|
21 Feb 2005, 14:50
Messaggio
#12
|
|
|
CITAZIONE([Daitarn) ]Faccio 1 pò di domande:
1) A cosa servono queste stringhe: CODICE set oldDel to text item delimiters set text item delimiters to oldDel AppleScript usa dei delimitatori di testo di default (credo che sia uno spazio), che servono per stabilire il confine tra una parola ed un'altra. Se cambi i delimitatori di testo (come facciamo noi in questi script), è buona norma ripristinarli com'erano all'inizio, perché se no altri script che assumono che i delimitatori sono quelli standard potrebbero non funzionare più. Quindi, prima di modificare i delimitatori di testo, si memorizzano quelli di default in una variabile (oldDel), e alla fine si ripristinano a quanto contenuto in oldDel. Noi modifichiamo i delimitatori di testo perché l'output del comando del Terminale che invochiamo è una stringa, e frammentarla in pezzi agendo con opportuni delimitatori di testo è comodo. CITAZIONE([Daitarn) ]2) E' possibile aggiungere, dopo il numero, l'unità di misura? Ora viene visualizzato (ad Es.) 4300 ed io vorrei aggiungere la rispettiva unità di misura.
Sì. Diciamo che la voce che ti interessa sta nella variabile datoCheMiInteressa. Puoi aggiungerci pezzi in coda così: CODICE set datoCheMiInteressa to (datoCheMiInteressa & " (volt)")
ad esempio se sai che la grandezza contenuta in datoCheMiInteressa è misurata in volt CITAZIONE([Daitarn) ]3) come posso centrare il testo?
Questo lo ignoro CITAZIONE([Daitarn) ][Continuo i test]
Fammi sapere! -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
21 Feb 2005, 16:04
Messaggio
#13
|
|
|
Dopo un pò di lavoro sono arrivato a questo:
CODICE set Info_Battery to "ioreg -p IODeviceTree -n battery -w 0 | grep IOBatteryInfo"
set Info_Battery_Result to do shell script Info_Battery set Info_Battery_Del to text item delimiters set text item delimiters to "{" set Info_Battery_Item_1 to text items of Info_Battery_Result set text item delimiters to "," set Info_Battery_Item_2 to text items of item 2 of Info_Battery_Item_1 set Info_1 to item 1 of Info_Battery_Item_2 -- "Capacity" set Info_2 to item 2 of Info_Battery_Item_2 -- "Amperage" set Info_3 to item 3 of Info_Battery_Item_2 -- "Cycle Count" set Info_4 to item 4 of Info_Battery_Item_2 -- "Current" set Info_5 to item 5 of Info_Battery_Item_2 -- "Voltage" set Info_6 to item 6 of Info_Battery_Item_2 -- "Flags" set Info_7 to item 7 of Info_Battery_Item_2 -- "AbsoluteMaxCapacity" set Info_Battery_Box to ¬ "Voltage:" & tab & Info_5 & " V" & return & return & ¬ "Cycle Count:" & tab & Info_3 & return & return & ¬ "Capacity Max:" & tab & Info_1 & " mAh" & return & ¬ "Capacity Native:" & tab & Info_7 & " mAh" & return & ¬ "Capacity Current :" & tab & Info_4 & " mAh" display dialog Info_Battery_Box buttons {"OK"} default button 1 set text item delimiters to Info_Battery_Del Ecco le domande: 1) Nel risultato, oltre alle mie voci personalizzate, compaiono anche le voci date direttamente dalla stringa (ad Es.: Capacity). Come posso far sì che non vengano mostrate e che si vedano solo le voci che ho messo io? 2) Per il voltaggio mi viene mostrato un risultato in millivolt. E' possibile dividere per 1000 (Es. 12.000 / 1000 = 12 Volt cioè la tensione effettiva della batteria) così da aver i Volt e non il sottomultiplo? 3) E' possibile, tra i risultati, far dividere un valore per un altro? Spiego meglio. Dividendo "Capacity Current" per "Capacity Max" si ottiene la Percentuale di carica. Ho provato questo ma non funziona: CODICE -- "Capacity Percentage :" & tab & (Info_4 / Info_1) & " %"
|
|
|
|
|
21 Feb 2005, 19:08
Messaggio
#14
|
|
|
CITAZIONE([Daitarn) ]Ecco le domande:
1) Nel risultato, oltre alle mie voci personalizzate, compaiono anche le voci date direttamente dalla stringa (ad Es.: Capacity). Come posso far sì che non vengano mostrate e che si vedano solo le voci che ho messo io? Io sfrutterei ancora il trucco dei text item delimiters: tutte le voci che ti vengono restituite dallo shell script hanno questo formato: "un certo parametro"=#### (dove #### è un numero). Allora puoi, per ogni valore che ti interessa, fare una cosa così (riadattando naturalmente i nomi delle variabili): CODICE set Info_1 to item 1 od Info_Battery_Item_2 -- "Capacity"
set text item delimiters to "=" set Info_capacity to text items of Info_1 set capacity to item 2 of Info_capacity Ora la variabile capacity (e così puoi fare anche per altre 6 variabili) contiene il solo valore numerico associato al parametro che stai acquisendo. CITAZIONE([Daitarn) ]2) Per il voltaggio mi viene mostrato un risultato in millivolt. E' possibile dividere per 1000 (Es. 12.000 / 1000 = 12 Volt cioè la tensione effettiva della batteria) così da aver i Volt e non il sottomultiplo?
Adesso che hai tutti i risultati sotto forma numerica, puoi farci le operazioni che vuoi, compreso dividere per 1000: CODICE set voltaggio to voltaggio/1000
dove voltaggio è una variabile che imposti con la stessa procedura della risposta alla domanda 1. CITAZIONE([Daitarn) ]3) E' possibile, tra i risultati, far dividere un valore per un altro? Spiego meglio.
Dividendo "Capacity Current" per "Capacity Max" si ottiene la Percentuale di carica. Ho provato questo ma non funziona: CODICE -- "Capacity Percentage :" & tab & (Info_4 / Info_1) & " %" Sì, come sopra: CODICE set percentuale to corrente/capacity
-- "Capacity Percentage:" & tab & percentuale & "%" Nuovamente, corrente e capacity sono state ottenute come per la risposta alla domanda 1. -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
21 Feb 2005, 19:27
Messaggio
#15
|
|
|
CITAZIONE(marcocoisson) Io sfrutterei ancora il trucco dei text item delimiters: tutte le voci che ti vengono restituite dallo shell script hanno questo formato:
"un certo parametro"=#### (dove #### è un numero). Allora puoi, per ogni valore che ti interessa, fare una cosa così (riadattando naturalmente i nomi delle variabili): CODICE set Info_1 to item 1 od Info_Battery_Item_2 -- "Capacity"
set text item delimiters to "=" set Info_capacity to text items of Info_1 set capacity to item 2 of Info_capacity Ora la variabile capacity (e così puoi fare anche per altre 6 variabili) contiene il solo valore numerico associato al parametro che stai acquisendo. Ho provato ma non funziona. Avevo avuto la stessa intuizione oggi pomeriggio ma non ero riuscito a farla andare. Diciamo che l'idea è valida ma il risultato non arriva. |
|
|
|
|
21 Feb 2005, 19:31
Messaggio
#16
|
|
|
Ohibò
[quote]--Open this script in a new Script Editor window. [b]set "ioreg -p IODeviceTree -n battery -w 0 | grep IOBatteryInfo" [b]set [b]set [b]set "{" [b]set [b]set "," [b]set [b]set [b]set "=" [b]set [b]set [b]set / 2 display dialog 1 [b]set A me funziona. A te che errore dà? -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
21 Feb 2005, 21:38
Messaggio
#17
|
|
|
Il tuo funziona ma se metti anche le parole per tradurre i termini da inglese ad italiano (ne abbiamo parlato prima) non funziona più.
|
|
|
|
|
21 Feb 2005, 21:47
Messaggio
#18
|
|
|
È strano: io posso concatenare stringhe e numeri:
CODICE set messaggio to "valore" & tab & caricaBatteriaValore & "%" & return & "Fine del messaggio"
display dialog messaggio buttons {"OK"} default button 1 Naturalmente anche questo è un dimostratore, il messaggio di testo è del tutto inventato. Che messaggio d'errore ti dà? -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
21 Feb 2005, 21:57
Messaggio
#19
|
|
|
Mi mostra i risultati come farebbe Terminal cioè tutti incasinati.
Facendo qualche ricerchina ho trovato una porzione di script che si adatta al caso. Ti posto tutto lo script, prova a darci un occhio. Io, da perfetto profano, potrei avere anche riportato delle porzioni perfettamente inutili. Pare funzionare bene cmq. CODICE set Info_Battery to (do shell script "ioreg -p IODeviceTree -n battery -w 0 | grep IOBatteryInfo")
set {Info_Vals, Info_Vals_Only} to {words of (text ((offset of "{" in Info_Battery) + 2) thru -3 of Info_Battery), {}} if (items 5 thru 6 of Info_Vals) = {"Cycle", "Count"} then set item 5 of Info_Vals to "Cycle Count" set Info_Vals to (items 1 thru 5 of Info_Vals) & (items 7 thru -1 of Info_Vals) end if repeat with i from 2 to count of Info_Vals by 2 try set end of Info_Vals_Only to ((item i of Info_Vals) as integer) on error set end of Info_Vals_Only to ((character 1 of (item i of Info_Vals)) as integer) end try end repeat -- Info_1 = "Capacity" -- Info_2 = "Amperage" -- Info_3 = "Cycle Count" -- Info_4 = "Current" -- Info_5 = "Voltage" -- Info_6 = "Flags" -- Info_7 = "AbsoluteMaxCapacity" set {Info_1, Info_2, Info_3, Info_4, Info_5, Info_6, Info_7} to Info_Vals_Only set Info_Battery_Box to ¬ "Voltage:" & tab & (Info_5 / 1000) & " Volt" & return & return & ¬ "Cycle Count:" & tab & Info_3 & return & return & ¬ "Capacity Max:" & tab & Info_1 & " mAh" & return & ¬ "Capacity Native:" & tab & Info_7 & " mAh" & return & ¬ "Capacity Current :" & tab & Info_4 & " mAh" & return & return & ¬ "Battery Charge Percentage :" & tab & (round ((Info_4 / Info_1) * 100)) & " %" display dialog Info_Battery_Box buttons {"OK"} default button 1 |
|
|
|
|
21 Feb 2005, 22:00
Messaggio
#20
|
|
|
A occhio direi che questo va bene (usa delle strategie che non conosco, quindi è interessante da studiare)
Se posti qua lo script che non ti funziona, nella sua interezza, provo a vedere che cosa c'è che non va. È vero che basta trovarne uno che funzioni, ma capire il perché un altro script funziona o no è comunque sempre interessante -------------------- Marco Coïsson
http://web.me.com/marco_coisson L'atomo divisibile: podcast gratuito di divulgazione scientifica. X come Macintosh |
|
|
|
|
![]() ![]() |
Argomenti simili o correlati
| Titolo discussione | Risposte | Autore discussione | Visite | Ultima azione | |||
|---|---|---|---|---|---|---|---|
![]() |
8 | gianky53 | 115 | Oggi, 09:45 Ultimo messaggio di: [Daitarn] |
|||
![]() |
35 | taki | 495 | 1 February 2010 - 13:51 Ultimo messaggio di: Samos |
|||
![]() |
15 | ryosaeb4 | 218 | 29 January 2010 - 17:56 Ultimo messaggio di: Claudio Torretta |
|||
![]() |
15 | andreuccio | 307 | 20 January 2010 - 18:46 Ultimo messaggio di: andreuccio |
|||
![]() |
1 | pieffe60 | 110 | 19 January 2010 - 12:56 Ultimo messaggio di: kato |
|||
![]() |
5 | kato | 155 | 19 January 2010 - 12:47 Ultimo messaggio di: kato |
|||
![]() |
1 | fc | 119 | 3 January 2010 - 09:47 Ultimo messaggio di: Martini |
|||
![]() |
9 | cristianof | 195 | 31 December 2009 - 13:49 Ultimo messaggio di: [Daitarn] |
|||
![]() |
0 | Roberto Rota | 182 | 18 December 2009 - 00:43 Ultimo messaggio di: Roberto Rota |
|||
![]() |
4 | AleMacBook | 287 | 14 December 2009 - 23:09 Ultimo messaggio di: Gojca |
|||
![]() |
7 | ma che bello | 302 | 14 December 2009 - 11:19 Ultimo messaggio di: Lullaby71 |
|||
![]() |
7 | Skaman | 170 | 14 December 2009 - 11:12 Ultimo messaggio di: Skaman |
|||
|
Versione Lo-Fi | Oggi è il: 9 February 2010 - 11:36 |
| IP.Board Skin Developed By Creative Networks | ||