[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] for循环命令求助

本帖最后由 vspeitao 于 2011-6-6 16:16 编辑
  1. for /l %%a in (1,1,100) do (
  2. for /l %%b in (101,1,127) do  (
  3. for /l %%c in (5,1,8) do (
  4. echo [ServerItem%%a] >>Svrlist.ini
  5. echo GroupId=1 >>Svrlist.ini
  6. echo Description=%%b店 >>Svrlist.ini
  7. echo Server=10.22.%%b.%%c >>Svrlist.ini
  8. echo Port=3389 >>Svrlist.ini
  9. echo Domain= >>Svrlist.ini
  10. echo User=administrator >>Svrlist.ini
  11. echo Password=**** >>Svrlist.ini
  12. echo Width=1024 >>Svrlist.ini
  13. echo Height=768 >>Svrlist.ini
  14. echo FullScreen=0 >>Svrlist.ini
  15. echo ColorDeepth=24 >>Svrlist.ini
  16. )
  17. )
  18. )
复制代码
运行上面的代码后%%a全部是1。这是为什么?

我觉得两次嵌套的代码更为直接通用:如果数据改变,你每次都要构造算法来得到b。
另外使用()>svrlist.ini,比多次>>更外高效,你把这个总循环次数调到一万次就非常明显了。

TOP

set /a "a=(1+3)/2"
batman 发表于 2011-6-6 21:49


是了原来要加“”看来还有很多要学的
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

set /a "a=(1+3)/2"
***共同提高***

TOP

本帖最后由 mxxcgzxxx 于 2011-6-6 21:47 编辑

不用多层的只要一层FOR,数字间的序列组合问题
  1. @echo off&SETLOCAL EnablEdElayEdExpansion
  2. for /l %%1 in (1,1,100) do (
  3.     set "a=%%1"
  4.     set /a b=a+((a-1^)/4-1^)*-4,c=101+(a-1^)/4
  5.     echo [ServerItem%%1] >>Svrlist.ini
  6.     echo GroupId=1 >>Svrlist.ini
  7.     echo Description=!c!店 >>Svrlist.ini
  8.     echo Server=10.22.!b!.!c! >>Svrlist.ini
  9.     echo Port=3389 >>Svrlist.ini
  10.     echo Domain= >>Svrlist.ini
  11.     echo User=administrator >>Svrlist.ini
  12.     echo Password=**** >>Svrlist.ini
  13.     echo Width=1024 >>Svrlist.ini
  14.     echo Height=768 >>Svrlist.ini
  15.     echo FullScreen=0 >>Svrlist.ini
  16.     echo ColorDeepth=24 >>Svrlist.ini
  17.     )
复制代码
顺便问下高手,为什么我的SET后)需要转义?不转义会出错!是什么原理
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

9# applba


谢谢了,为什么set /a命令要加个!!  不加这个为什么不行啊?

TOP

本帖最后由 applba 于 2011-6-6 16:39 编辑

改成 for /l 多层嵌套求助

我看数学不好哇,9楼的代码运行出来有108个ServerItem,不是100个哟。

你一楼给出的代码运行出来有一万个ServerItem,ini文件体积有几个M。

TOP

呃。~~~那我应该改成什么标题啊,,,,偶滴语文表达能力不行啊。

TOP

本帖最后由 applba 于 2011-6-6 16:34 编辑
  1. @echo off
  2. SETLOCAL EnablEdElayEdExpansion
  3. (   set /a a=0
  4.     for /l %%b in (101,1,127) do  (     
  5.         for /l %%c in (5,1,8) do (
  6.             set  /a a+=1
  7.             echo [ServerItem!a!]
  8.             echo GroupId=1
  9.             echo Description=%%b店            
  10.             echo Server=10.22.%%b.%%c     
  11.             echo Port=3389     
  12.             echo Domain=     
  13.             echo User=administrator     
  14.             echo Password=****     
  15.             echo Width=1024     
  16.             echo Height=768     
  17.             echo FullScreen=0     
  18.             echo ColorDeepth=24
  19.             echo.            
  20.          )
  21.     )
  22. )>svrlist.ini
  23. start svrlist.ini
复制代码

TOP

楼主虽然修改了标题,但仍然很模糊,最好按照我三楼给出的链接再修改一次。。。。

代码也请及时放入code标签内。。。
***共同提高***

TOP

本帖最后由 vspeitao 于 2011-6-6 16:33 编辑

写简单点的就是
  1. NO.1
  2. 10.22.101.5
  3. NO.2
  4. 10.22.101.6
  5. NO.3
  6. 10.22.101.7
  7. NO.4
  8. 10.22.101.8
  9. NO.5
  10. 10.22.102.5
  11. NO.6
  12. 10.22.102.6
  13. NO.7
  14. 10.22.102.7
  15. NO.8
  16. 10.22.102.8
  17. …………
复制代码
生成上面的。这样的批处理应该怎么写

TOP

4# vspeitao


1、请修改标题,避免使用“万金油”
2、请把代码放在code中,可以手动加,也可以选中代码,并点击回复框上方的“<>”按钮,这样比较快
3、请吧所有要求都更新到顶楼,尽量一次性描述准确,可以减少别人的重复劳动

TOP

我用set /a 这命令为什么在for 里就不会自动加了。?????

TOP

本帖最后由 vspeitao 于 2011-6-6 16:34 编辑

首先谢谢你的回答,我也弄清楚了是嵌套的问题,但是不知道怎么写才行
这内容是配置文件里的内容
一段为一台电脑的配置
[ServerItem%%a] 这为编号 所以 每次都要把它加进来的
如下:
  1. [ServerItem1]  //这里每次都要加的
  2. GroupId=1
  3. Description=101店
  4. Server=10.22.101.5
  5. Port=3389
  6. Domain=
  7. User=administrator
  8. Password=****
  9. Width=1024
  10. Height=768
  11. FullScreen=0
  12. ColorDeepth=24
  13. [ServerItem2]  //这里每次都要加的
  14. GroupId=1
  15. Description=101店
  16. Server=10.22.101.6
  17. Port=3389
  18. Domain=
  19. User=administrator
  20. Password=****
  21. Width=1024
  22. Height=768
  23. FullScreen=0
  24. ColorDeepth=24
  25. [ServerItem3]   //这里每次都要加的
  26. GroupId=1
  27. Description=101店
  28. Server=10.22.101.7
  29. Port=3389
  30. Domain=
  31. User=administrator
  32. Password=****
  33. Width=1024
  34. Height=768
  35. FullScreen=0
  36. ColorDeepth=24
复制代码
…………一直往下
你的代码我运行了  也不行

TOP

************************************************************

家法不可不守!

请阅读论坛发贴规则:

        http://www.bathome.net/thread-963-1-1.html

提示:

        请大家在楼主修改标题并得到管理层认可之前不要给出任何有意义的回复。

        否则一律视为无视论坛纪律扣2分!(管理层和技术组扣4分)

        论坛是大家的,也要靠大家来维护。。。

************************************************************
***共同提高***

TOP

返回列表