2016-03-08 54 views
0

我正在嘗試創建一個批處理腳本,以允許識別網絡連接(已更新)。網絡適配器批處理標識

這是一個比我以前更簡單的版本,但是在調用if語句時遇到問題。

@echo off 
wmic nic get NetConnectionID, NetConnectionStatus 
set Connection=(wmic path Win32_NetworkAdapter Where AdapterTypeID=0) 
set Status=(wmic path Win32_NetworkAdapter Where NetConnectionStatus=2) 

IF %Connection% and %Status% ( 
echo %computername% is connected to the network via Ethernet Wired/Wireless 
Pause 
::exit /b 2 
) ELSE (
echo %computername% is not connected to a Network 
Pause 
::exit /b 1 
) 
+0

你會想要看看'if /?'的輸出 – SomethingDark

+0

對不起,在評論中添加它,更新了問題 –

回答

0

您只能使用for /f循環將命令的結果設置爲變量。例如,%Connection%將設置這樣的:

for /f %%A in ('wmic path Win32_NetworkAdapter Where AdapterTypeID=0') do set Connection=%%A 


無論其
如果你看看wmic path Win32_NetworkAdapter Where AdapterTypeID=0實際輸出,你會看到有方式太多的數據在那裏你的變量很有用。另外,您可以將兩個wmic查詢合併爲一個查詢,因此完全不需要使用if語句。

echo The following computers are connected to the network via Ethernet/Wireless: 
wmic path Win32_NetworkAdapter where "AdapterTypeId=0 and NetConnectionStatus=2" get SystemName 
pause 

如果你只想要返回基於是否有任何實際找到的錯誤級別,你必須STDERR重定向到STDOUT然後查找時,沒有實例被發現,被返回的字符串。這意味着如果腳本找到連接的計算機,則返回1;否則返回0(這與正常錯誤級別值相反)。

wmic path Win32_NetworkAdapter where "AdapterTypeId=0 and NetConnectionStatus=2" 2>&1|find "No Instance" 
echo %errorlevel% 

這也是值得注意的是,一批不具備在if語句邏輯的支持,所以你只能通過嵌套if小號模擬and秒。

+0

所以只有當wmic路徑是正確的,那麼它將拉動系統名稱?如果我想要返回一個錯誤級別,如果路徑是真的,那麼我會怎麼做呢? –

+0

@EdMontgomery - 見上面的編輯。 – SomethingDark