Eu criei esse arquivo .bat que é chamado clicando no atalho apropriado, que está configurado corretamente. Mas as duas últimas comparações parecem não avaliar adequadamente.
Aqui vamos nós.
@ECHO off
SETLOCAL EnableDelayedExpansion
SET landevcename='Imagine any name for a device'
SET landevcestatus=0
SET landevcestatusDisab=0
SET landevcestatusConn=2
SET landevcestatusT="NONE"
SET landevceidx=0
SET counter=1
ECHO Lan device to be checked is: %landevcename%
FOR /F "tokens=1" %%I IN ('wmic PATH win32_networkadapter where "Name=%landevcename%" get index') DO (
IF !counter!==2 SET /a landevceidx=%%I
SET /a counter+=1
)
ECHO Index of local area connection is: %landevceidx%
SET /a counter=1
FOR /F "tokens=1" %%J IN ('wmic PATH win32_networkadapter where "Name=%landevcename%" get netconnectionstatus') DO (
IF !counter!==2 SET /a landevcestatus=%%J
SET /a counter+=1
)
ECHO Status of local area connection is: %landevcestatus%
REM IF %landevcestatus%==%landevcestatusDisab% SET /a landevcestatusT=Disabled
IF %landevcestatus%==0 SET /a %landevcestatusT% "ItIsNotEnabled"
REM IF %landevcestatus%==%landevcestatusConn% SET /a landevcestatusT=Connected
**IF %landevcestatus%==2 SET /a %landevcestatusT% "ItIsEnabled"**
ECHO Text - Status of local area connection is: %landevcestatusT%
ECHO Status of local area connection is: %landevcestatus%
CMD
@ECHO off
Os dois:
IF% landevcestatus% == 0 SET / a% landevcestatusT% "ItIsNotEnabled"
IF% landevcestatus% == 2 SET / a% landevcestatusT% "ItIsEnabled"
Onde poderia estar o erro de digitação?
windows-7
batch-file
wmic
icbytes
fonte
fonte
Respostas:
Onde poderia estar o erro de digitação?
Você tem muitos erros no seu arquivo em lotes.
Você está claramente confuso sobre como usar
set
eset /a
. Por favor, leia set .Também valeria a pena ler Depurando seus arquivos em lotes .
Uma observação geral - corrija seu recuo (isso facilita a depuração).
Correções
Deveria estar:
Se você usar
'
, então você precisa para escapar da'
suafor
comando.Deveria estar:
/a
é usado para expressões numéricas, não para atribuições de cadeia.Deveria estar:
Deveria estar:
Deveria estar:
Deveria estar:
Deveria estar:
Você precisa evitar o
=
uso^
e remover os"
s (eles fazem parte da variável%landevcename%
).Arquivo em lote simplificado
Você pode fazer o que quiser com um único
for /f
comando e menos variáveis. Você não precisa de um índice ou contador.Use o seguinte arquivo em lotes e defina
landevicename
conforme apropriado.LanStatus.cmd :
Exemplo de saída :
Leitura adicional
fonte
/a
não tem nada a ver comdelayed expansion
. É para expressões aritméticas. Por favor, leia o link que eu lhe dei.