2014-07-23 44 views
0

我正在編寫一個批處理腳本,其中我應該區分Windows和非Windows系統(Linux,MAC OS,交換機,Xerox機器等)。Windows和其他系統的批處理區分

算法:

if (it is a Windows System) 
then 
    do this 
end if 

爲了做到這一點,我想採取nbtstat命令的幫助。按我的知識,當nbtstat -A [IP Address]執行,如果[IP Address]是Windows系統,它可以按如下方式顯示輸出:

>nbtstat -A 172.22.73.15 
Local Area Connection: 
Node IpAddress: [172.22.73.15] Scope Id: [] 
      NetBIOS Remote Machine Name Table 

     Name    Type   Status 
    --------------------------------------------- 
    MANDAR-PC  <00> UNIQUE  Registered 
    DOMAIN  <00> GROUP  Registered 
    MANDAR-PC  <20> UNIQUE  Registered 
    DOMAIN  <1E> GROUP  Registered 

    MAC Address = 00-1E-0B-9D-DD-E9 

對於非Windows系統中,輸出將是:

>nbtstat -A 172.22.246.51 

Local Area Connection: 
Node IpAddress: [172.22.73.15] Scope Id: [] 

    Host not found. 

如何使用nbtstat或其他命令來區分Windows和其他系統?

回答

0
nbtstat -A 172.22.246.51 | find /i "Host not found." >nul 2>&1 && (echo not a windows) || (echo windows) 

+0

我有一個命令塊(多個'wmic'調用)被替換爲'echo不是windows'和'echo windows'。這種語法在這種情況下會起作用嗎? –

+0

它是否正確識別機器?如果是的話,你可以把wmic電話放在'echoes'的位置,甚至在括號內使用多行。 – npocmaka

+0

它確實可以識別機器,但是用'wmic'調用的多行代碼代替'echos',它不會執行代碼。您可以在接受的答案中找到[http://stackoverflow.com/questions/22953558/batch-script-shows-no-output]中的代碼。我在'ping'命令後面使用了'nbtstat'命令。 –