2015-01-26 27 views
-1

我試圖運行使用PHP下面的批處理腳本修改IP地址(它運行從命令提示符處罰款)使用參數傳遞如何使用網絡外殼採用參數作爲IP

@echo off 
setlocal enabledelayedexpansion 
netsh int ip set address "EDU_LAN_Connection" static 172.31.%1.110 255.255.255.0 172.31.%1.1 1 

更改IP在PHP:

system("cmd /c C:\EDU_Project\change_ip.bat 6"); 

我運行PHP腳本時收到以下錯誤:

Invalid address parameter (172.31.61.1 1). It should be a valid IPv4 address. 

我不知道怎麼樣用參數來使用delayedexpansion。請幫忙 !

+2

我想你應該考慮如何IPv4地址的格式 – 2015-01-26 20:50:42

+0

你想分配一個B類地址,這是所有罰款。一個標準的B類地址應該是(172.x.y.z),你目前正在做172.x.y.z A,其中A是。是的IP結構,因此,我原來的評論無效 – 2015-01-26 20:55:12

+0

此錯誤是一樣的這個問題討論:http://stackoverflow.com/questions/21824179/ip-configuration-from-batch-file但我不知道如何使用參數與delayedexpansion – Chetan 2015-01-26 21:00:24

回答

1

批處理參數僅與%1解決。不%1%

相應地更改您的批處理文件:

netsh int ip set address "EDU_LAN_Connection" static 172.31.%1.110 255.255.255.0 172.31.%1.1 1 
+0

謝謝我做了改變,腳本運行在命令提示符處罰款,但來自PHP跑的時候我仍然得到這個錯誤: 無效的地址參數(172.31.6.110 255.255.255.0 172.31.6.1)。它應該是一個有效的IPv4地址。 Ping請求找不到主機172.31.6.1 -n 2.請檢查名稱並重試。 – Chetan 2015-01-26 20:57:24

+0

我在回答中編輯了一個錯字。請再試一次。 – Stephan 2015-01-26 21:09:59

+0

感謝您的幫助斯蒂芬,是的,我已經看到了錯字它仍然無法正常工作。在命令提示符下工作正常。 – Chetan 2015-01-26 21:10:45

0

而不是去對系統功能和傳遞一個參數的批處理文件。我直接使用了shell_exec運行netsh命令從PHP:

$var= 18; 
shell_exec('netsh int ip set address name=\"EDU_LAN_Connection\" static 172.31.'.$var.'.110 255.255.255.0 172.31.'.$var.'.1 1');