Wiki di Michele

Variabili e file batch

GuidaUltima modifica: 24/10/2026 Verificata il 24/10/2026

Guida rapida a variabili, condizioni e cicli, per scrivere file .bat o .cmd.

echo e commenti

@echo off
echo Ciao mondo
echo.
rem Questo è un commento
:: Anche questo è un commento

@echo off all'inizio dello script evita di mostrare ogni comando eseguito.

Variabili

set nome=Michele
echo %nome%
set /p risposta=Come ti chiami? 
set /a somma=5+3
set /a contatore+=1
set nome=

Variabili d'ambiente predefinite

VariabileContenuto
%USERNAME%Nome utente
%COMPUTERNAME%Nome del computer
%USERPROFILE%Cartella del profilo
%APPDATA%Dati applicazioni dell'utente
%TEMP%Cartella temporanea
%SYSTEMROOT%Cartella di Windows
%DATE% / %TIME%Data e ora
%CD%Cartella corrente
%~dp0Cartella dello script
%1 ... %9Parametri passati allo script
%ERRORLEVEL%Codice di uscita dell'ultimo comando

%~dp0 è fondamentale per far funzionare gli script indipendentemente da dove vengono lanciati.

if

if "%nome%"=="Michele" echo Ciao Michele
if exist file.txt echo Il file esiste
if not exist cartella mkdir cartella
if %errorlevel% neq 0 echo Errore
if %numero% gtr 10 echo Maggiore di 10
if /i "%x%"=="si" echo Confermato

Operatori numerici: equ, neq, lss, leq, gtr, geq. /i ignora maiuscole e minuscole.

Con else, tutto sulla stessa riga:

if exist file.txt (
    echo Esiste
) else (
    echo Non esiste
)

for

for %%f in (*.txt) do echo %%f
for /l %%i in (1,1,10) do echo %%i
for /r C:\Dati %%f in (*.log) do echo %%f
for /d %%d in (*) do echo %%d
for /f "tokens=*" %%a in (file.txt) do echo %%a
for /f "tokens=1,2 delims=," %%a in (dati.csv) do echo %%a - %%b
for /f %%a in ('dir /b') do echo %%a

Nel file batch si usa %%variabile, da riga di comando %variabile.

Etichette, goto e call

goto :fine
echo Questa riga viene saltata
:fine
call altro.bat
call :funzione argomento
exit /b 0

:funzione
echo Argomento: %1
exit /b
@echo off
:menu
cls
echo 1. Mostra IP
echo 2. Pulisci DNS
echo 3. Esci
set /p scelta=Scelta: 
if "%scelta%"=="1" ipconfig & pause & goto menu
if "%scelta%"=="2" ipconfig /flushdns & pause & goto menu
if "%scelta%"=="3" exit /b
goto menu

Redirezione e concatenazione

comando > file.txt
comando >> file.txt
comando 2> errori.txt
comando > tutto.txt 2>&1
comando > nul
comando1 & comando2
comando1 && comando2
comando1 || comando2
comando1 | comando2
SimboloSignificato
>Scrive sovrascrivendo
>>Aggiunge in coda
2>Redirige gli errori
&Esegue di seguito
&&Esegue il secondo solo se il primo riesce
`\\`Esegue il secondo solo se il primo fallisce
`\`Pipe: l'output diventa l'input del successivo

Altri comandi utili negli script

pause
timeout /t 10
cls
title Titolo finestra
color 0A
start "" notepad.exe
choice /c SN /m "Continuare"

Espansione ritardata nei cicli

Dentro blocchi e cicli, %variabile% viene letta una volta sola. Per leggere il valore aggiornato:

setlocal enabledelayedexpansion
set tot=0
for %%i in (1 2 3) do (
    set /a tot+=%%i
    echo !tot!
)

Tag

comandiwindows

Altre pubblicazioni in questa sezione

Suggerisci una correzione