【问题标题】:Passing variables from batch script subroutine to subroutine将变量从批处理脚本子程序传递到子程序
【发布时间】:2015-05-21 21:03:03
【问题描述】:

我有调用 batch2、3 等的 batch1(父批处理)。Batch2 做了一些事情,设置一个变量 (%fullname%) 并退出。批次 3 应该使用来自批次 2 的变量。

批次1

Call Batch2
echo %fullname%
Call Batch3

我试过了

Call Batch 3 %fullname%
Call Batch3 %1
etc

回显 %fullname% 在 Batch1 中成功。 %fullname% 没有进入 Batch3。我希望这是我缺少的一些简单的东西,因为我厌倦了查看这个批处理文件。另外,我有很多变量和调用,比这个例子显示的要多。

我应该放弃父批次并让子批次相互调用吗?更简单?例如Batch1 调用 Batch2,batch2 调用 batch3,batch3 调用 batch4 等等。

我已经用谷歌搜索过了。这个问题显然太简单了,以前没有问过。

【问题讨论】:

  • batch1中%fullname%的内容是否成功回显?你在批处理文件中使用 setlocal`s 吗?
  • 在Batch1中回显%fullname%成功。
  • 在第 2 或第 3 批中没有 setlocals。我在第 1 批中使用了setlocal,但它是在我提供的这个示例之后。
  • fullname的内容是什么?像"<>&|%! 这样的空格或字符有什么特别之处吗?在开头添加echo %* 时在batch3 中看到了什么?
  • %fullname% 是名字姓氏。所有带有空格的文本。我也有数字变量的问题。

标签: variables batch-file set call subroutine


【解决方案1】:

批处理.bat:

@echo off
call batchtwo.bat
call batchthree.bat
pause
exit

另存为 batchone.bat

batchtwo.bat:

@echo off
::insert code here
set fullname=mechengr02
exit /b

另存为batchtwo.bat

batchthree.bat:

@echo off
echo hello %fullname%
exit /b

另存为batchthree.bat

请注意,这是三个不同的批处理文件。我刚刚测试过。

希望对您有所帮助!

【讨论】:

  • 是的,它有效。在我将代码复制并粘贴到此线程中时发现错误。 Batch2 设置“显示名称”。 Batch3 称为“dname”。忘记更改要匹配的变量名。
  • 很高兴我能帮上忙! :)
猜你喜欢
  • 2015-08-04
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 2020-05-17
  • 2021-08-09
相关资源
最近更新 更多