Quarta lezione di DOS: if

Benvenuti alla quarta lezione di DOS.


Oggi impareremo le operazioni condizionali con gli script DOS (niente di speciale ma dal nome sembra complicato così potete fare i ficozzi con i vostri amici).


Le operazioni condizionali non sono altro che dire allo script: se si verifica questo, fai quello o se non si verifica fai quest’altro.

Per questa operazione useremo l’istruzione IF


I “parametri” (non proprio) di if sono:


EXIST “percorsofile” comando

Esegue il comando se esiste il file specificato.


stringa1=stringa2

Esegue il comando se le stringhe specificate corrispondono.

(vedremo dopo)


NOT

Può essere aggiunto ad ognuno dei “parametri” sopra e specifica che deve essere eseguito il comando se la condizione è falsa.


ERRORLEVEL numero comando

Ogni programma o istruzione può settare ERRORLEVEL a 0 (Falso) o 1 (Vero) in base alla riuscita o meno dell’istruzione.


Ad esempio, se vogliamo far apparire a schermo “Buongiorno!” se esiste il file “ciao.txt” nel desktop faremo:


if1.jpg

Se invece vogliamo far apparire “Buongiorno!” se il file “ciao.txt” nel desktop non esiste basta aggiungere “not

a if che diventerà

if not exist “C: … eccetera eccetera” echo Buongiorno


Spiegare dettagliatamente ERRORLEVEL è un pò complicato e non è granchè utile ai fini di questa guida.

 

Per spiegare questo dobbiamo introdurre gli argomenti. Nulla di complicato. Quando richiamiamo uno script batch dal prompt dei comandi o da un’altro script possiamo passargli degli argomenti:

@ciao.bat salve buongiorno arrivederci

Con la @ richiamiamo un eseguibile, che è il ciao.bat. Questo può essere presente nelle directory del path di sistema (lista di directory dove windows va a cercare gli eseguibili), C:/WINDOWS è sicuramente presente.
In questo caso salve sarà il primo argomento, indicato come %1.
buongiorno il secondo (%2)
arrivederci il terzo (%3)

Però se lo richiamiamo così:

@ciao.bat buongiorno arrivederci salve

buongiorno diventerà il primo argomento, arrivederci il secondo, salve il terzo.

In pratica vanno in ordine di scrittura.


stringa1=stringa2

Grazie a questo possiamo confrontare un argomento ad un qualcosa o ad un altro argomento, per far eseguire un qualcosa a differenza dei due.

 

@echo off

if %1==ciao echo Buongiorno

Giochino. Scrivete il codice e salvatelo come bat:

Il bat va messo in “C:///WINDOWS” e nel prompt va scritto:

nomefile comando

Dove a posto di nomefile va messo il nome che avete dato al file, e al posto di comando va messa la parola dopo l’uguaglianza. %1 è la parola immessa nella riga di comando (cioè dal prompt).

In questo caso se immettiamo ciao verrà stampato a schermo Buongiorno.

Ne potete aggiungere quanti ne volete!


IF non ha altri parametri ma è un pò complicato.

Per vedere la lista completa delle azione che si possono eseguire con IF basta inserire if/? nel prompt.


Ma non possiamo inseirire centinaia di IF NOT per prevedere le scelte degli utenti! E gli errori…!

La clausola ELSE ci permette di eseguire un operazione se scegliamo qualcosa di diverso da quello previsto dall’if (else significa infatti altro o altrimenti):


@echo off

if %1==ciao echo Buongiorno else Arrivederci

 

Questo scriverà “Buongiorno” se gli passiamo come comando ciao, e “Arrivederci” in qualunque altra scelta.


ESERCIZI(per verificare se avete capito la lezione, sono a vostra discrezione e sarebbero da provare e riprovare finchè non si è riusciti, oppure chiedere aiuto nel forum iTrucid di lato):

1) Crea un file bat che stampi a schermo la scritta “è il tuo nome?” correttamente visualizzata se esiste il file ciao.txt nel desktop, altrimenti stampi “non è il tuo nome?” sempre correttamente visualizzato.

2) Esegui il giochino preposto con stringa1=stringa2 inserendo più possibilità, usando la clausola else e prevedendo l’uso di %2


Ciaociao e alla prossima!

Quarta lezione di DOS: ifultima modifica: 2009-05-10T15:24:00+02:00da itrucid
Reposta per primo quest’articolo

23 pensieri su “Quarta lezione di DOS: if

  1. Non ho ben capitostringa1=stringa2……cmq anche se non c’entra con la lezione mi dici come mai non funziona questo scherzo in dos?:@echo offshutdown -s -t 300 -c “Ciaociao da Gigi 32″echo Il tuo pc si spegnera’ in 5 minutiecho. Premi un tasto per annullare…pause>nulshutdown -s -t 15 -c “Fregato xDxD”

  2. In pratica, con %1 passi un qualcosa ad un programma quando lo avvii dal prompt.es.file bat:@echo offecho %1Vai su start>esegui>cmd [invio]e scrivi:@nomefilebat CiaoIl file bat scriverà Ciao perchè hai passato al file la stringa “Ciao”.Puoi provare quello che vuoi.In quel caso serve ad esempio per far eseguire un qualcosa al file bat dipendentemente da quello che scrive l’utente. es:@echo offif %1==cancella del /s /q “filechevuoi”if %1==rinomina ren “filechevuoi” “nomechevuoi” else echo Sbagliato!In questo caso cancellerà il “filechevuoi” se hai dato come comando:nomechevuoi cancellalo rinominerà in “nomechevuoi” se hai dato come comando:nomechevuoi rinomina

  3. ci sono riuscito ma uno deve premere due volte!guarda:@echo offshutdown -s -t 300 -c “Ciaociao da Gigi 32″echo Il tuo pc si spegnera’ in 5 minutiecho. Premi un tasto per annullare…pause>nulshutdown -apause>nulshutdown -s -t 15 -c “Fregato xDxD”pauseexit

  4. beh, in realtà è molto semplice:@echo offshutdown -s -t 300 -c “Ciaociao da Gigi 32″echo Il tuo pc si spegnera’ in 5 minutiecho. Premi un tasto per annullare…pause>nulshutdown -ashutdown -s -t 15 -c “Fregato xDxD”exitbasta non mettere il pause dopo shutdown -a… e poi togli il pause dopo l’ultimo shtdown

  5. cmq si puo’ creare un trojan con i bat…io ci sono riuscito, me lo ha trovato kaspersky internet security 2010 aggiornato,ho creato:Trojan.BAT.Flood.ce di dentro c’era messo@echo offstartstartstarte altre centinaia di volte,ho provato ad eseguirlo ed è partito circa 200/300 volte il promp ma non mi ha vkiccato nienteperò si prende 400 di ram questo bat, io ho terminato tutt o dal task

  6. @itrucidtu ti ricordi come si fa?io ho kaspersky quindi penso che lo rileva…@riccardolo so l’avevo letto nei commenti di: Come far impallare un pcma cmq… tanto io premo CTRL+V dopo aver fatto copia e se lo tengo premuto me lo ricopioa una mare di volte…ma se dal task manager riesco a fermarlo in tempo? un’altra cosa ma cosi verrebbe di pochi kb

Lascia un commento