jump to navigation

Identificare il sistema operativo (Windows) con un file batch 13 ottobre 2010

Posted by Roberto Mattioli in Scripting.
trackback

Ci sono ancora ragioni per usare il DOS nell’era di Powershell? Probabilmente no ma comunque potrebbe tornare utile una risorsa che proprio questa mattina mi ha levato da un grosso impiccio (perché a me Powershell entusiasma, ma non ho ancora avuto tempo da dedicarvi – che è male).

L’articolo originale (in inglese) si trova qui.

Il testo dello script (con una modifica rispetto all’originale – vedere sotto):

@echo off
ver | find “2003” > nul
if %ERRORLEVEL% == 0 goto ver_2003

ver | find “XP” > nul
if %ERRORLEVEL% == 0 goto ver_xp

ver | find “2000” > nul
if %ERRORLEVEL% == 0 goto ver_2000

ver | find “NT” > nul
if %ERRORLEVEL% == 0 goto ver_nt

if not exist %SystemRoot%\system32\systeminfo.exe goto warnthenexit

systeminfo | find “Nome SO” > %TEMP%\osname.txt
FOR /F “usebackq delims=: tokens=2” %%i IN (%TEMP%\osname.txt) DO set vers=%%i

echo %vers% | find “Windows 7” > nul
if %ERRORLEVEL% == 0 goto ver_7

echo %vers% | find “Windows Server 2008” > nul
if %ERRORLEVEL% == 0 goto ver_2008

echo %vers% | find “Windows Vista” > nul
if %ERRORLEVEL% == 0 goto ver_vista

goto warnthenexit

:ver_7
:Run Windows 7 specific commands here.
echo Windows 7
goto exit

:ver_2008
:Run Windows Server 2008 specific commands here.
echo Windows Server 2008
goto exit

:ver_vista
:Run Windows Vista specific commands here.
echo Windows Vista
goto exit

:ver_2003
:Run Windows Server 2003 specific commands here.
echo Windows Server 2003
goto exit

:ver_xp
:Run Windows XP specific commands here.
echo Windows XP
goto exit

:ver_2000
:Run Windows 2000 specific commands here.
echo Windows 2000
goto exit

:ver_nt
:Run Windows NT specific commands here.
echo Windows NT
goto exit

:warnthenexit
echo Machine undetermined.

:exit

Rispetto all’originale ho modificato la linea (in grassetto la parte modificata)

systeminfo | find “Nome SO” > %TEMP%\osname.txt

perché il comando systeminfo restituisce informazioni differenti a seconda della localizzazione del sistema operativo. Nello script originale infatti era specificato “OS Name” anziché “Nome SO”. Su sistemi operativi in italiano bisognerebbe fare riferimento a “Nome SO”, usando “OS Name” per i sistemi operativi in inglese.

Ulteriori dettagli visitando il post originale.

Commenti»

No comments yet — be the first.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: