2013-07-30 15 views
0

我有我我重啓機器批處理文件,並要檢查,如果機器重新聯機然後執行代碼塊特定的時間後,其他人告知用戶本機不在線 我想看看是這樣的:檢查機器可訪問或不使用命令

pingresult = ping \\machinename 

if (pingresult == true) 
{ 
    execute some task 
} 
else 
{ 
    keep pinging for say 5min. if after 5mins machine is not up show message to user 
} 

回答

2

這將嘗試以3秒的默認超時查驗%MACHINENAME%,爲100次:3秒* 100 = 300秒,即5分鐘。

for /L %%N IN (1, 1, 100) DO (
    ping -n 1 %machinename% 
    if not ERRORLEVEL 1 (
     set pingresult=true 
     goto done 
    ) 
) 
set pingresult=false 
:done 
if %pingresult% == true (
    echo "ping ok, doing something..." 
) else (
    echo "no reply after 5 mins, error!" 
) 
+0

你不應該在機器名之前有\\,那將不會像你認爲的那樣工作。 – Mark

+1

@Mark right,我用%machinename%替換了\\ machinename以清楚地表明這只是遠程主機名稱的佔位符。 IP地址也可以。 –

+0

因爲我將\\ machinename傳遞給批處理文件作爲參數,所以我使用了SET test =%1,SET result =%test:* \\ =%,ping -n 1%result%。 它的工作..感謝您的解決方案 – usr021986

相關問題