标题: [其他] for循环命令求助 [打印本页]
作者: vspeitao 时间: 2011-6-6 15:14 标题: for循环命令求助
本帖最后由 vspeitao 于 2011-6-6 16:16 编辑
- for /l %%a in (1,1,100) do (
- for /l %%b in (101,1,127) do (
- for /l %%c in (5,1,8) do (
- echo [ServerItem%%a] >>Svrlist.ini
- echo GroupId=1 >>Svrlist.ini
- echo Description=%%b店 >>Svrlist.ini
- echo Server=10.22.%%b.%%c >>Svrlist.ini
- echo Port=3389 >>Svrlist.ini
- echo Domain= >>Svrlist.ini
- echo User=administrator >>Svrlist.ini
- echo Password=**** >>Svrlist.ini
- echo Width=1024 >>Svrlist.ini
- echo Height=768 >>Svrlist.ini
- echo FullScreen=0 >>Svrlist.ini
- echo ColorDeepth=24 >>Svrlist.ini
- )
- )
- )
复制代码
运行上面的代码后%%a全部是1。这是为什么?
作者: applba 时间: 2011-6-6 15:34
看到这种一排齐的代码就头大了。
还有没有弄清楚层次关系就不要玩嵌套。
作者: batman 时间: 2011-6-6 16:07
************************************************************
家法不可不守!
请阅读论坛发贴规则:
http://www.bathome.net/thread-963-1-1.html
提示:
请大家在楼主修改标题并得到管理层认可之前不要给出任何有意义的回复。
否则一律视为无视论坛纪律扣2分!(管理层和技术组扣4分)
论坛是大家的,也要靠大家来维护。。。
************************************************************
作者: vspeitao 时间: 2011-6-6 16:08
本帖最后由 vspeitao 于 2011-6-6 16:34 编辑
首先谢谢你的回答,我也弄清楚了是嵌套的问题,但是不知道怎么写才行
这内容是配置文件里的内容
一段为一台电脑的配置
[ServerItem%%a] 这为编号 所以 每次都要把它加进来的
如下:- [ServerItem1] //这里每次都要加的
- GroupId=1
- Description=101店
- Server=10.22.101.5
- Port=3389
- Domain=
- User=administrator
- Password=****
- Width=1024
- Height=768
- FullScreen=0
- ColorDeepth=24
-
- [ServerItem2] //这里每次都要加的
- GroupId=1
- Description=101店
- Server=10.22.101.6
- Port=3389
- Domain=
- User=administrator
- Password=****
- Width=1024
- Height=768
- FullScreen=0
- ColorDeepth=24
-
- [ServerItem3] //这里每次都要加的
- GroupId=1
- Description=101店
- Server=10.22.101.7
- Port=3389
- Domain=
- User=administrator
- Password=****
- Width=1024
- Height=768
- FullScreen=0
- ColorDeepth=24
复制代码
…………一直往下
你的代码我运行了 也不行
作者: vspeitao 时间: 2011-6-6 16:09
我用set /a 这命令为什么在for 里就不会自动加了。?????
作者: CrLf 时间: 2011-6-6 16:12
4# vspeitao
1、请修改标题,避免使用“万金油”
2、请把代码放在code中,可以手动加,也可以选中代码,并点击回复框上方的“<>”按钮,这样比较快
3、请吧所有要求都更新到顶楼,尽量一次性描述准确,可以减少别人的重复劳动
作者: vspeitao 时间: 2011-6-6 16:31
本帖最后由 vspeitao 于 2011-6-6 16:33 编辑
写简单点的就是- NO.1
- 10.22.101.5
-
- NO.2
- 10.22.101.6
-
- NO.3
- 10.22.101.7
-
- NO.4
- 10.22.101.8
-
- NO.5
- 10.22.102.5
-
- NO.6
- 10.22.102.6
-
- NO.7
- 10.22.102.7
-
- NO.8
- 10.22.102.8
- …………
复制代码
生成上面的。这样的批处理应该怎么写
作者: batman 时间: 2011-6-6 16:32
楼主虽然修改了标题,但仍然很模糊,最好按照我三楼给出的链接再修改一次。。。。
代码也请及时放入code标签内。。。
作者: applba 时间: 2011-6-6 16:32
本帖最后由 applba 于 2011-6-6 16:34 编辑
- @echo off
- SETLOCAL EnablEdElayEdExpansion
- ( set /a a=0
- for /l %%b in (101,1,127) do (
- for /l %%c in (5,1,8) do (
- set /a a+=1
- echo [ServerItem!a!]
- echo GroupId=1
- echo Description=%%b店
- echo Server=10.22.%%b.%%c
- echo Port=3389
- echo Domain=
- echo User=administrator
- echo Password=****
- echo Width=1024
- echo Height=768
- echo FullScreen=0
- echo ColorDeepth=24
- echo.
- )
- )
- )>svrlist.ini
- start svrlist.ini
复制代码
作者: vspeitao 时间: 2011-6-6 16:33
呃。~~~那我应该改成什么标题啊,,,,偶滴语文表达能力不行啊。
作者: applba 时间: 2011-6-6 16:35
本帖最后由 applba 于 2011-6-6 16:39 编辑
改成 for /l 多层嵌套求助
我看数学不好哇,9楼的代码运行出来有108个ServerItem,不是100个哟。
你一楼给出的代码运行出来有一万个ServerItem,ini文件体积有几个M。
作者: vspeitao 时间: 2011-6-6 16:36
9# applba
谢谢了,为什么set /a命令要加个!! 不加这个为什么不行啊?
作者: mxxcgzxxx 时间: 2011-6-6 21:44
本帖最后由 mxxcgzxxx 于 2011-6-6 21:47 编辑
不用多层的只要一层FOR,数字间的序列组合问题- @echo off&SETLOCAL EnablEdElayEdExpansion
- for /l %%1 in (1,1,100) do (
- set "a=%%1"
- set /a b=a+((a-1^)/4-1^)*-4,c=101+(a-1^)/4
- echo [ServerItem%%1] >>Svrlist.ini
- echo GroupId=1 >>Svrlist.ini
- echo Description=!c!店 >>Svrlist.ini
- echo Server=10.22.!b!.!c! >>Svrlist.ini
- echo Port=3389 >>Svrlist.ini
- echo Domain= >>Svrlist.ini
- echo User=administrator >>Svrlist.ini
- echo Password=**** >>Svrlist.ini
- echo Width=1024 >>Svrlist.ini
- echo Height=768 >>Svrlist.ini
- echo FullScreen=0 >>Svrlist.ini
- echo ColorDeepth=24 >>Svrlist.ini
- )
复制代码
顺便问下高手,为什么我的SET后)需要转义?不转义会出错!是什么原理
作者: batman 时间: 2011-6-6 21:49
set /a "a=(1+3)/2"
作者: mxxcgzxxx 时间: 2011-6-6 21:52
set /a "a=(1+3)/2"
batman 发表于 2011-6-6 21:49
是了原来要加“”看来还有很多要学的
作者: applba 时间: 2011-6-7 00:07
我觉得两次嵌套的代码更为直接通用:如果数据改变,你每次都要构造算法来得到b。
另外使用()>svrlist.ini,比多次>>更外高效,你把这个总循环次数调到一万次就非常明显了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |