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

在bat1中call另外一个bat2, 如何把bat2中的变量值返回给bat1

[复制链接]
发表于 2013-12-30 10:29:57 | 显示全部楼层 |阅读模式
bat1
@echo off
call bat2.bat
echo %b2%  --------请教高人如何在bat1中调用到bat2中的b2

bat2
@echo off
set b2=abcd bacsd
echo %b2% -------------b2如何返回给bat1中
pause
发表于 2013-12-30 16:46:48 | 显示全部楼层
只有一个返回值的话可以用exit /b [code]然后用%errorlevel%检测?不过只支持数字...
 楼主| 发表于 2013-12-31 13:42:07 | 显示全部楼层
如果是返回字符串纳?
发表于 2013-12-31 14:54:57 | 显示全部楼层
对这个我也很头疼,一直没有解决,最后我用的是迂回的方法,
把bat2中的字符串写到一个临时文件里,然后bat1中再读取出来作为一个变量使用,然后删除临时文件。
发表于 2013-12-31 16:33:02 | 显示全部楼层
不用返回,只要不开delayedexpantion直接就已经赋值给b2了
 楼主| 发表于 2013-12-31 16:33:19 | 显示全部楼层
是个法子,坐等高人,有没有比较直接的方法
发表于 2013-12-31 17:28:13 | 显示全部楼层
bat1.bat
  1. @echo off
  2. for /f "delims=" %%i in ('call bat2.bat') do (
  3.     set "b2=%%i"
  4. )
  5. echo %b2%
  6. pause
复制代码
bat2.bat
  1. @echo off
  2. set b2=abcd bacsd
  3. echo %b2%
复制代码
 楼主| 发表于 2013-12-31 22:38:27 | 显示全部楼层
回复 7# DAIC


    谢谢, 我试过这样是可以的
 楼主| 发表于 2013-12-31 22:43:43 | 显示全部楼层
回复 7# DAIC


    问下, call 能否返回字符串?
发表于 2013-12-31 23:28:01 | 显示全部楼层
for /f "delims=" %%i in ('call bat2.bat') do (
   ---------------- 通过上面这句我们看出,这是bat语言设计的缺陷,这是没有return 关键字的悲哀。
随着高级语言的发展,
有了函数,弃了goto
有了函数,必须有return xxx,yyy,zzz

鉴定此语法:不简单,不直观,不被菜鸟会,
再此我劝诸位牛人和菜鸟,

【应逐渐弃了bat这破铜烂铁,专磨powershelllllllll 这把屠龙!!!】
发表于 2013-12-31 23:40:42 | 显示全部楼层
这个意思?

  1. call "1.cmd" "b2"
  2. echo %b2%
复制代码

  1. set %~1=abcd bacsd
复制代码
发表于 2014-1-1 11:24:17 | 显示全部楼层
回复 9# feihuang


    你顶楼的那种想法是不行的
发表于 2014-1-1 11:24:57 | 显示全部楼层
你可以考虑一下11楼的做法是否符合你的需求
 楼主| 发表于 2014-1-6 10:34:59 | 显示全部楼层
回复 11# terse


    call时传入参数b2, 为什么在第二段代码中给参数b2(%1)赋值之后, 在第一段代码中能知道b2的值被改变了? 这个是什么样的原理?
 楼主| 发表于 2014-1-6 10:35:41 | 显示全部楼层
回复 13# DAIC


    恩,我也看到过类似的方法,只是不太理解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 22:48 , Processed in 0.033916 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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