2015-01-26 83 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');