Board logo

标题: [文件操作] [已解决]怎么样才能在一个新cmd窗口中调用另一批处理中的某段代码? [打印本页]

作者: 小麦    时间: 2011-10-4 03:41     标题: [已解决]怎么样才能在一个新cmd窗口中调用另一批处理中的某段代码?

一般在批处理中运行别的批处理用START **.BAT 就行了 但是如果只想在批处理中调用另一批处理中的一部分呢?而且这部分有变量。该怎么样才能调用已经赋值之后的这部分?下面这段批处理没有达到我的目的
  1. @ECHO OFF
  2. ECHO 输入要PING的IP
  3. SET /P A=
  4. PING %A%
  5. ECHO 输入要PING此IP打开的窗口数
  6. SET /P B=
  7. FOR /L %%I IN (1,1,%B%)DO START 1.bat
复制代码
复制代码把上面这段代码保存为1.bat .打开后,输入IP,输入打开的窗口数(比如2次) 恩,第一次很好;但第二个窗口要求你重新输入IP。 而 我想再次调用此批处理中已输好的 赋值好的PING %A% 而不要求重新输入要PING的IP  怎么能够做到?
  可能有的人会觉得这张贴眼熟 ,是的 ,我发过类似的帖子,已经解决了 :http://www.bathome.net/thread-14157-1-1.html 就这张贴 。但是仔细对比,你会发现我把其中的“次数”改为了“窗口数” 。  看清楚咯!这个问题又怎么解决???
还有一个前提, 那就是打开的窗口之间的时间几乎要同时, 不能一个ping完 接着第二个, 第二个ping完 ~~第三个~~~···要几乎同时哦!
作者: 545810831    时间: 2011-10-4 06:59

各位要小心了,很容易陷入死循环的
作者: 545810831    时间: 2011-10-4 12:41

  1. @ECHO OFF&setlocal enabledelayedexpansion
  2. set c=%a%%b%
  3. if defined c goto sta
  4. ECHO 输入要PING的IP
  5. SET /P A=
  6. ECHO 输入要PING此IP打开的窗口数
  7. SET /P B=
  8. :sta
  9. if  !m! equ !B! exit
  10. PING %A%
  11. set /a m+=1
  12. START 1.bat
  13. pause
复制代码

作者: 小麦    时间: 2011-10-4 21:07

本帖最后由 小麦 于 2011-10-4 22:54 编辑

回复 2# 545810831


    对 我试了几次 都这样 ++||
你的这个批处理虽然能够出现ping的窗口数 能不能够同时出现 而不是 一个接一个??
作者: bluewing009    时间: 2011-10-4 21:16

请参考一下“参数传递”关于传递参数有很多方法,比如%123,临时文件,注册表等等。推荐第一种。
作者: 545810831    时间: 2011-10-4 23:41

回复 4# 小麦
在我的 xp3 系统测试是正常的,没有出现 ++|| 现象
作者: weichenxiehou    时间: 2011-10-5 10:20

  1. @ECHO OFF
  2. if not "%1"=="" goto next
  3. ECHO 输入要PING的IP
  4. SET /P A=
  5. ECHO 输入要PING此IP打开的窗口数
  6. SET /P B=
  7. for /l %%i in (1 1 %b%) do start "" "%0" %a%
  8. exit
  9. :next
  10. ping %1
  11. pause>nul
复制代码

作者: 小麦    时间: 2011-10-5 20:18

回复 6# 545810831


    +++|||我说我的代码出现了这个状况。
   你的没有。
   但你的是一个窗口ping完 ,再接着另一个窗口。
   我问:能不能同时出现?或者出现的时间差只有一或零点几秒。?
作者: 小麦    时间: 2011-10-5 20:33

回复 7# weichenxiehou
我试了 好几次 ,都不能运行。
每次提示“系统找不到指定文件”  ..... ......
作者: weichenxiehou    时间: 2011-10-6 09:07

回复 9# 小麦
我怎么运行没有问题呢?输入完ip和窗口数,回车后就出现相应个窗口同时在ping。。。
作者: hankerer    时间: 2011-10-6 09:42

  1. @echo off
  2. set /p a=请输入IP:
  3. set /p b=窗口数:
  4. echo @echo off>temp.bat
  5. echo ping %a%>>temp.bat
  6. for /l %%i in (1 1 %b%) do start temp.bat
  7. pause
  8. del temp.bat /q
复制代码
简单一点用个临时文件嘛。
作者: 小麦    时间: 2011-10-7 00:11

回复 11# hankerer


    给了我一个新的思考方式 谢谢~~!
作者: 小麦    时间: 2011-10-7 00:14

回复 10# weichenxiehou


    你肯定哪里弄错了~~我又试了一次,还是不行。
  你检查一下 ,确定没错吗??




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