【问题标题】:Call subroutine inside another batch file that has spaces in the filename?在文件名中有空格的另一个批处理文件中调用子程序?
【发布时间】:2017-10-17 15:07:53
【问题描述】:

我一直在看一些关于如何在另一个批处理文件(即Call a subroutine in a batch from another batch file)中调用子程序的示例,但不知何故,外部批处理文件以常规方式执行,即从头到尾,使用被调用的函数忽略/跳过。

我认为这与外部批处理文件中的空格有关:

:: main batch file.cmd where the subroutine is called from
CALL "second batch file.cmd" :SUBROUTINE
goto :EOF

:: second batch file.cmd contents

ECHO IGNORE THIS
goto :EOF

:SUBROUTINE
ECHO SUBROUTINE CALLED FROM 'main batch file.cmd'!
goto :EOF

这不是应该工作吗?对我来说不是:/

【问题讨论】:

  • 我认为您混淆了一些概念。这一行:CALL "second batch file.cmd" :SUBROUTINE 表示调用一个名为“第二个批处理文件.cmd”的外部批处理文件,并在第一个参数中传递了:SUBROUTINE 字符串。像往常一样,这样的字符串可以通过%1 字符进入被调用的批处理文件中。批处理文件的第一个参数与此类文件中的:SUBROUTINE 标签没有关系,除非您使用goto %1 命令启动调用的批处理文件。见stackoverflow.com/questions/11576270/…
  • 现在一切都说得通了。谢谢你的解释,Aacini :-)

标签: batch-file call subroutine spaces


【解决方案1】:

作为第二个批处理文件的第一行输入:

IF "%1"==":SUBROUTINE" GOTO :SUBROUTINE

【讨论】:

  • 我一直在我的一些批处理文件中使用这种方法,但假设它也应该使用我上面显示的方法工作。因为您提供了一个工作示例,所以我已将您的答案标记为解决方案。谢谢 thx1138v2 ;-)
猜你喜欢
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2013-12-17
  • 2017-07-22
  • 1970-01-01
相关资源
最近更新 更多