Precedente :: Successivo |
Autore |
Messaggio |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 06 Set 2006 15:32 Oggetto: Preparare una guida ai file batch |
|
|
split da qui
chemicalbit
kluster ha scritto: | si, effettivamente se non hai mai avuto a che fare con il linguaggio BATCH (che è l'unica parte che si puo' dire complessa) puo' sembrare un po' complicato. | Questo mi ricorda che io dovrei preparare una guida ai file batch.
(se mi dimentico, sollecitatemi )
L'ultima modifica di chemicalbit il 06 Set 2006 16:43, modificato 1 volta |
|
Top |
|
 |
kluster Dio maturo

Registrato: 15/04/06 13:14 Messaggi: 2898
|
Inviato: 06 Set 2006 16:13 Oggetto: |
|
|
Questa è veramente ottima, sarebbe una bella cosa tradurla in italiano |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 06 Set 2006 16:37 Oggetto: |
|
|
kluster ha scritto: | Questa è veramente ottima, sarebbe una bella cosa tradurla in italiano | Sembra interessante.
quella però parla anche di utenti DOS, e soprattutto dà per scontato che si sappia cosa siano e come funzionino i comandi DOS,
mentre io vorrei fare più una cosa con la quale anche l'utente medio attuale in modo che riesca perlomeno a capire cosa siano e come fuzionino i file batch, anche se non ha mai sentito parlare non solo di file batch ma neppure di comandi DOS.
Semmai ne riparliamo in una zona più adatta.
p.s.: mi pare che il copyright di qulla pagina non autorizzi la traduzione |
|
Top |
|
 |
kluster Dio maturo

Registrato: 15/04/06 13:14 Messaggi: 2898
|
Inviato: 06 Set 2006 16:43 Oggetto: |
|
|
x farne una bella cosa bisognerebbe anche aggiungerci un riferimento ai comandi interni di xp/2000 (tipo questo - magari non tutti i comandi, solo i principali o i + utili).
EDIT: se ti serve una mano per scrivera te la do volentieri |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 06 Set 2006 17:04 Oggetto: |
|
|
kluster ha scritto: | aggiungerci un riferimento ai comandi interni di xp/2000 (tipo questo | Quelli non sono solo i coamndi estrermi ma anche gli interni.
In ogni caso io mi stavo orientando a fare qualcosa di leggero, che spieghi cosa siano e come funzionino i file batch (e al limite come fare qualche semplice batch)
Qualcosa tipo questa mia risposta e le mie seguenti nella stessa discussione (ma chiaramente più ampia e completa, con esempi, ecc.)
Ed eventulemnte fare poi una guida più dettagliata sui file batch e un'altra sui comandi dos.
kluster ha scritto: | EDIT: se ti serve una mano per scrivera te la do volentieri | Grazie.
Più che altro al moemnto il mio problema è proprio capire il preciso argoemnto e punto di vista da trattare.
Per cui questo confronto mi è utile. |
|
Top |
|
 |
kluster Dio maturo

Registrato: 15/04/06 13:14 Messaggi: 2898
|
Inviato: 06 Set 2006 17:24 Oggetto: |
|
|
un suggerimento almeno se io fossi un utente curioso mi farei queste domande
Che roba è? Come si scrive un file bat? Che comandi mi possono tornare utili per tutti i giorni?
Se fossi un utente un po' meno principiante magari che ha gia' masticato qualcosina di script:
E' un linguaggio con una sua sintassi?
Posso utilizzare e instanziare variabili?
Esiste il controllo condizionale o per lo meno posso controllare il flusso del programma?
Esistono dei comandi per la ripetizione delle azioni (for etc?)
Ha delle funzioni interne (e qui ci si ricollega ai comandi DOS) e cosa mi permettono di fare queste funzioni |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 22 Ott 2006 10:14 Oggetto: |
|
|
questo messaggio e i seguenti provengono da qui - n.d.Chemicalbit
kluster ha scritto: | Potresti provare creando un file .bat utilizzando a (...) winAction dato che uccide anche basandosi su titolo finestra o classe programma (...)
Citazione: |
@echo off
WinAction -a close -c "CLASSE"
cls
|
| Perché usare un file batch per un singolo comando?
(@echo off e cls servono solo per motivi estetici, e proprio perché si usa un file batch)
Basta associare
Codice: | WinAction -a close -c "CLASSE" | ad un'icona sul desktop o nel menù avvio, o simili.
oppure kluster ha scritto: | Poi lo metti in operazione pianificata ogni tot ore o minuti etc | indicare l'intera riga di comando in "operazione pianificata"
L'ultima modifica di chemicalbit il 25 Ott 2006 15:44, modificato 1 volta |
|
Top |
|
 |
kluster Dio maturo

Registrato: 15/04/06 13:14 Messaggi: 2898
|
Inviato: 22 Ott 2006 13:00 Oggetto: |
|
|
Boh si hai ragione, fa prima, l'importante è che capisca quale è il comando utile, poi come lo usa, è come si trova meglio.
Io personalmente preferisco le operazioni da linea di comando metterle in un file .bat perchè puo' essere ampliato in qualsiasi momento ed editato anche da linea di comando.
E poi cls e echo non è solo per "estetica", ma è la convenzione corretta per evitare di sporcare l'output con altre cavolate nella finestra, di modo che se c'è un errore vede solo quello. |
|
Top |
|
 |
GrayWolf Dio maturo


Registrato: 03/07/05 17:24 Messaggi: 2325 Residenza: ... come frontiera i confini del mondo...
|
Inviato: 22 Ott 2006 13:43 Oggetto: |
|
|
kluster ha scritto: |
Io personalmente preferisco le operazioni da linea di comando metterle in un file .bat perchè puo' essere ampliato in qualsiasi momento ed editato anche da linea di comando. |
Sono completamente d'accordo, senza contare che una cartella, contenente tutti i batch, è più sotto controllo oltre che a essere "portabile"  |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 22 Ott 2006 14:34 Oggetto: |
|
|
kluster ha scritto: | E poi cls e echo non è solo per "estetica", ma è la convenzione corretta per evitare di sporcare l'output con altre cavolate nella finestra, di modo che se c'è un errore vede solo quello. | L' @echo off sì (per vedere solo gli errori, bisognerebbe anche rindirizzare lo standard output a nul , ma comunque già @echo off aiuta)
Ma perché cls in fondo?
anzi se c'è un messaggio d'eerrore non lo vedi perché lo schermo viene "pulito" (a parte che se lo lanci da windows senza aprire prima una finestra del prompt dei coamndi -ma o con esegui, o clickando su uncolelgamento, o sul file dalla sua cartella, ecc. - windows chiuderà automaticamente la finestra al termien del fiel batch ) |
|
Top |
|
 |
kluster Dio maturo

Registrato: 15/04/06 13:14 Messaggi: 2898
|
Inviato: 22 Ott 2006 14:52 Oggetto: |
|
|
Citazione: |
anzi se c'è un messaggio d'eerrore non lo vedi perché lo schermo viene "pulito" (a parte che se lo lanci da windows senza aprire prima una finestra del prompt dei coamndi -ma o con esegui, o clickando su uncolelgamento, o sul file dalla sua cartella, ecc. - windows chiuderà automaticamente la finestra al termien del fiel batch )
|
si nell'ottica che un file bat venga eseguito da interfaccia windows si, ma puo' essere il caso che venga eseguito in modalita' console, o all'avvio del sistema operativo prima dell'avvio della gui (diciamo questo era + per 95/98) quindi per convenzione lo metto sempre almeno è visibile solo ed esclusivamente l'output. Cmq passi che il cls si puo' anche evitare di mettere. |
|
Top |
|
 |
kluster Dio maturo

Registrato: 15/04/06 13:14 Messaggi: 2898
|
Inviato: 22 Ott 2006 14:56 Oggetto: |
|
|
ferma ferma, ho fatto un errore grosso come una casa, hai ragione.
il cls va messo prima
@echo off
cls
...... comandi
poi al max ci puoi aggiungere &2>1 ai comandi etc o quello che ti pare per buttarlo su file, su console etc |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 22 Ott 2006 15:02 Oggetto: |
|
|
kluster ha scritto: | ferma ferma, ho fatto un errore grosso come una casa, hai ragione.
il cls va messo prima | Ops ....
Ecco perché non capivo.
Confessa, l'hai fatto apposta per vedere se ero attento  |
|
Top |
|
 |
kluster Dio maturo

Registrato: 15/04/06 13:14 Messaggi: 2898
|
Inviato: 22 Ott 2006 15:15 Oggetto: |
|
|
eheh, sono io il distratto.
In casa la mia distrazione è risaputa, infatti gli spigoli sporgenti di mobili/lampadari (ma perchè i lampadari, li mettono sempre a misura per gente bassa??), sono tutti smussati  |
|
Top |
|
 |
kluster Dio maturo

Registrato: 15/04/06 13:14 Messaggi: 2898
|
Inviato: 25 Ott 2006 17:34 Oggetto: |
|
|
Ti do' un paio di suggerimenti che magari ti possono fare comodo per la stesura delle Faq.
Nell'ottica dei file bat e delle tue faq, la console di 2000/xp e 2003 (che ha alcuni comandi aggiuntivi, molto utili come reg per scrivere nel registry, where per cercare etc) è stata notevolemmente migliorata rispetto a quella di 95/98, per esempio il
set con possibilita' di svolgere funzioni aritmetiche
Codice: |
set pippo = 0
set /A pippo +=1
set /A pippolanna = (23+15) * "%pippo%" |
o il set /P che apre il prompt per la richiesta di inserimento dato.
Codice: | set /p choice=Inserisci il tuo nome, non inserire pippo
if "%choice%" == "pippo" goto USCITA |
il reindirizzamento dell'output
comando1 | comando2 manda l'output del comando1 al comando 2
comando1 < NOMEFILE riceve l'input da NOMEFILE
comando1 > NOMEFILE manda l'output a NOMEFILE
comando1 >> NOMEFILE accoda l'output a NOMEFILE
comando1 2> NOMEFILE invia a NOMEFILE solo l'output di errore.
comando1 2> & 1 NOMEFILE invia a NOMEFILE sia l'output standard che l'output di errore
il concatenamento dei comandi
& comando1 & comando2 &.....
es.
Codice: | D: & cd "Documenti" |
esegue un comando dopo l'altro
&& Comando1 && Comando2
es.
Codice: | cd "Documenti" && del *.txt |
esegue Comando2 se Comando1 viene completato correttamente (una sorta di if)
|| Comando1 || Comando2
es.
Codice: | cd myDoc || cd "MyDocuments" |
esegue Comando2 se Comando1 NON viene completato correttamente (una sorta di if not)
Per il for invece ho qui accanto a me stampato la tabellina delle opzioni del for (un grazie al nostro sistemista):
Codice: | for /f ["OPZIONI"] %%VARIABILE in (origine) do (istruzione) |
dove OPZIONI possibili sono:
eol = imposta il carattere di commento di fine riga (tutto quello che segue è considerato commento)
es. eol=# il carattere # è considerato commento di fine riga
skip = stabilisce il numero di righe da saltare.
es. skip=5, salta le prime 5 righe del file
delims = imposta i delimitatori di campo
es. delims=,..: specifica che virgole, punti e 2 punti sono delimitatori
tokens = specifica quali campi del tracciato della riga devono essere utilizzati (es. una riga composta in questo modo:
Silvio Berlusconi delinquente, Silvio è il 1° tokens, Berlusconi il 2°, delinquente il 3°)
es. tokens=1,3 specifica di usare il campo 1 ed il 3
es. tokens=1-3 specifica di usare campo 1, campo 2 e campo 3
es. tokens=* esamina intera riga senza suddividere in campi
usebackq = specifica che si possono utilizzare virgolete (back quote) nel nome degli argomenti del for che contengono spazi ed altri caratteri problematici.
L'uso delle opzioni possono essere combinati separando ogni comando da uno spazio.
Es.
set valore=Tutti,Alcuni,Nessuno
Codice: | for /f "delims=, tokens=1,3" %AA in ("%valore%") do (echo %%A %%B) |
l'ouput è
Tutti Nessuno
altro esempio: Parlamento.txt composto da queste 4 righe:
Codice: |
Attenzione! Il file potrebbe non essere aggiornato:
Silvio§Berlusconi§silvio.berlusconi@forzaitalia.it§Arcore, Villa Certosa$17
Cesare§Previti§cesare.previti@forzaitalia.it§Milano, Piazza Farnese$6
|
si puo' usare un comando del genere per formattare l'output
Codice: | for /f "skip=2 tokens=2-6 delims=§ usebackq" %%C in ("type "File Utente.txt"") do (echo
Deputato: %%C, residenza: %%E, indirizzo email: %%D, processi in cui è (o stato) coinvolto: %%F) |
|
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 31 Ott 2006 00:28 Oggetto: |
|
|
Sì,
non li conosco benisismo ma avevo sentito dire che esistevano
Diciamo che quando mi servono provo a guardare l'help
( for /? tra l'altro da delle spiegaizoni con in alcuni punti delle cose non molto comprensibili (errore di "stampa"?)
Però non sapventiamo i novizi con quete cose,
il principale vantaggio dei file batch (normali, non quelli "mostruosi" con questicomandi) sta nella loro semplicità e facilità. |
|
Top |
|
 |
|