Board logo

标题: [数值计算] [已解决]批处理如何让变量自动递增? [打印本页]

作者: lovealei    时间: 2008-1-6 21:58     标题: [已解决]批处理如何让变量自动递增?

本帖最后由 lovealei 于 2011-8-22 19:37 编辑

cd ghost
if exist WATTCP.CFG del WATTCP.CFG >nul
echo IP=192.168.2.%1> Wattcp.cfg
echo NETMASK=255.255.255.0>> Wattcp.cfg
echo GATEWAY=192.168.2.251>> Wattcp.cfg
ghost -ja=yx

上面的代码是网络克隆时用到的,运行时要输入 go x 回车,这里的X是一个变量,我现在不想手动输入,我想让它每运行一次自动递加1,比如说我输入 go 3 回车后结果,第一行和最后一行不管它

IP=192.168.2.3
NETMASK=255.255.255.0
GATEWAY=192.168.2.251

可不可以读取wattcp.cfg 这个文件中的第一行最后一个数字,让它加1 这样就可以放在 Autoexec.bat 下面不用手动了

现在还有一段,不过我看不懂意思,

random 1 254|nset random1=$1 >nul
echo IP=192.168.2.%random1%> Wattcp.cfg
echo NETMASK=255.255.255.0>> Wattcp.cfg
echo GATEWAY=192.168.2.1>> Wattcp.cfg
set random1=

这里的随机不知道怎么用
作者: youxi01    时间: 2008-1-6 22:09

你这里似乎有几个问题了,分开来发好些吧!
上面的代码是网络克隆时用到的,运行时要输入 go x 回车,这里的X是一个变量,我现在不想手动输入,我想让它每运行一次自动递加1,比如说我输入 go 3 回车后结果,第一行和最后一行不管它

其实,这里你没必要一个一个数字去输的,比如,要colone从1~255的IP地址,可以这样:
命令行下:
for /l %i in (1 1 255) do go %i
作者: youxi01    时间: 2008-1-6 22:20

呵呵,写完了,才弄明白楼主的意思

你是不是想 colone 第一台机器后(设置IP为:192.168.2.3后)

Wattcp.cfg中
IP=192.168.2.3自动转为:IP=192.168.2.4啊?
作者: 随风    时间: 2008-1-7 00:00

楼主应该是这个意识,相当于计算批处理运行的次数。
每运行一次,就加1
:
  1. @echo off
  2. for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%~nx0"') do set /a num=%%i-1
  3. for /f "skip=%num% delims=" %%a in ('type "%~nx0"') do (
  4.   for /f "delims= " %%b in ("%%a") do if not "%%b"==":" echo\>>"%~nx0"
  5.   for %%b in (%%a) do set /a %%b+=1
  6. )
  7. set /a :+=1
  8. set/p=: <nul>>"%~nx0"
  9. :: 以下为要运行的代码。
  10. cd ghost
  11. if exist WATTCP.CFG del WATTCP.CFG >nul
  12. echo IP=192.168.2.%:%> Wattcp.cfg
  13. echo NETMASK=255.255.255.0>> Wattcp.cfg
  14. echo GATEWAY=192.168.2.251>> Wattcp.cfg
  15. ghost -ja=yx
  16. exit
复制代码

[ 本帖最后由 随风 于 2008-1-7 00:01 编辑 ]
作者: lovealei    时间: 2011-8-22 19:36

时隔3年,再来回贴,3年前的东西现在早已能看懂,但现在我还是菜啊!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2