PDA

Visualizza la versione completa : [Batch] Problema con condizione


Tiime
08-07-2017, 20:32
Salve a tutti, sto cercando di realizzare un file batch che preso in input un parametro, lo analizzi per vedere se si tratta di una 's' o di un qualsiasi altro carattere.

Il codice è il seguente:

echo offSET /P scelta="Vuoi avviare il programma? Digita 's' per avviarlo, qualsiasi altro tasto per non avviarlo: "
set scelta=s
IF "%scelta%"=="s"
(
ECHO Fra qualche secondo verra' avviato il programma...
)
ELSE
(
ECHO ciao
)
Sapreste dirmi per quale motivo, il prompt si chiude non appena do in input qualsiasi tasto?

- Grazie a tuti

oregon
09-07-2017, 09:25
Intanto le prime due righe sono unite in una sola. Come mai?

Poi mi sembra che manchi l'input dell'utente e quindi il programma va avanti e quando termina il prompt di chiude naturalmente perché il processo si conclude.

Tiime
09-07-2017, 19:14
echo off
SET /P scelta="Vuoi avviare il programma? Digita 's' per avviarlo, qualsiasi altro tasto per non avviarlo: "
SET scelta="s"
IF "%scelta%"=="s"
(
ECHO Fra qualche secondo verra' avviato il programma...
timeout /t 3
)
ELSE
(
ECHO ciao
)
Questo è il codice corretto, per sbaglio le prime due righe erano state unite... Anyway:
La riga

SET /P scelta="Vuoi avviare il programma? Digita 's' per avviarlo, qualsiasi altro tasto per non avviarlo: "
non dovrebbe servire a prendere in input un parametro dall'utente?

Per quanto riguarda la riga

set scelta="s"
l'ho utilizzato per controllare se ci fossero problemi di qualche tipo nell'input, ma anche forzando la variabile scelta ad assumere il valore "s", il programma si chiudere immediatamente, nonostante l'aggiunta dello sleep.

oregon
09-07-2017, 22:25
Scrivi così



echo off
SET /P scelta="Vuoi avviare il programma? Digita 's' per avviarlo, qualsiasi altro tasto per non avviarlo: "
IF "%scelta%"=="s" (
ECHO Fra qualche secondo verra' avviato il programma...
timeout /t 3
) ELSE (
ECHO ciao
)



e comunque doveva essere

set scelta=s

Tiime
10-07-2017, 10:30
Non ci credo che tutto il problema risiedesse nell'indentazione :facepalm:

PS: conosci per caso qualche modo per poter scrivere la frase che appare prima della richiesta di input su più righe?

oregon
10-07-2017, 11:53
Usa delle ECHO

Tiime
11-07-2017, 23:09
Usa delle ECHO
Le ECHO non dovrebbero apparire soltanto dopo la pressione del tasto?

oregon
12-07-2017, 22:36
E perché? Usale quando vuoi

Loading