找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28656|回复: 12

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

[复制链接]
发表于 2011-10-4 03:41:26 | 显示全部楼层 |阅读模式
一般在批处理中运行别的批处理用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完 ~~第三个~~~···要几乎同时哦!

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-10-4 06:59:27 | 显示全部楼层
各位要小心了,很容易陷入死循环的
发表于 2011-10-4 12:41:51 | 显示全部楼层
  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
复制代码

评分

参与人数 1PB +5 收起 理由
CrLf + 5 乐于助人

查看全部评分

 楼主| 发表于 2011-10-4 21:07:45 | 显示全部楼层
本帖最后由 小麦 于 2011-10-4 22:54 编辑

回复 2# 545810831


    对 我试了几次 都这样 ++||
你的这个批处理虽然能够出现ping的窗口数 能不能够同时出现 而不是 一个接一个??
发表于 2011-10-4 21:16:17 | 显示全部楼层
请参考一下“参数传递”关于传递参数有很多方法,比如%123,临时文件,注册表等等。推荐第一种。
发表于 2011-10-4 23:41:54 | 显示全部楼层
回复 4# 小麦
在我的 xp3 系统测试是正常的,没有出现 ++|| 现象
发表于 2011-10-5 10:20:51 | 显示全部楼层

  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
复制代码

评分

参与人数 1PB +5 收起 理由
CrLf + 5 乐于助人

查看全部评分

 楼主| 发表于 2011-10-5 20:18:56 | 显示全部楼层
回复 6# 545810831


    +++|||我说我的代码出现了这个状况。
   你的没有。
   但你的是一个窗口ping完 ,再接着另一个窗口。
   我问:能不能同时出现?或者出现的时间差只有一或零点几秒。?
 楼主| 发表于 2011-10-5 20:33:09 | 显示全部楼层
回复 7# weichenxiehou
我试了 好几次 ,都不能运行。
每次提示“系统找不到指定文件”  ..... ......
发表于 2011-10-6 09:07:16 | 显示全部楼层
回复 9# 小麦
我怎么运行没有问题呢?输入完ip和窗口数,回车后就出现相应个窗口同时在ping。。。
发表于 2011-10-6 09:42:31 | 显示全部楼层
  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
复制代码
简单一点用个临时文件嘛。

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-10-7 00:11:33 | 显示全部楼层
回复 11# hankerer


    给了我一个新的思考方式 谢谢~~!
 楼主| 发表于 2011-10-7 00:14:38 | 显示全部楼层
回复 10# weichenxiehou


    你肯定哪里弄错了~~我又试了一次,还是不行。
  你检查一下 ,确定没错吗??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:01 , Processed in 0.021679 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表