Batch file 在另一个批处理文件中访问批处理函数

Batch file 在另一个批处理文件中访问批处理函数,batch-file,Batch File,好的,假设我们有一个名为“lib.cmd”的文件,它包含 @echo off GOTO:EXIT :FUNCTION echo something GOTO:EOF :EXIT exit /b @echo off call lib.cmd 然后我们有一个名为“init.cmd”的文件,它包含 @echo off GOTO:EXIT :FUNCTION echo something GOTO:EOF :EXIT exit /b @echo off call l

好的,假设我们有一个名为“lib.cmd”的文件,它包含

@echo off
GOTO:EXIT

:FUNCTION
     echo something
GOTO:EOF

:EXIT
exit /b
@echo off

call lib.cmd
然后我们有一个名为“init.cmd”的文件,它包含

@echo off
GOTO:EXIT

:FUNCTION
     echo something
GOTO:EOF

:EXIT
exit /b
@echo off

call lib.cmd

init.cmd中是否有可访问的函数?就像bash如何使用“source”一样,在同一进程中运行另一个bash文件。

将您的
lib.cmd更改为这样

@echo off
call:%~1
goto exit

:function
     echo something
goto:eof

:exit
exit /b
然后,传递到批处理文件(
%~1
)的第一个参数将标识为要调用的函数,因此将使用
调用:%~1
调用它,现在可以在
init.cmd
中以以下方式调用它:

call lib.cmd function

有关更多详细信息,请参见以下内容:采用@npocmaka解决方案并添加对使用参数在中调用函数的支持。感谢@jeb的改进。让我们将以下内容另存为
lib.cmd

@echo off
shift & goto :%~1

:foo
set arg1=%~1
set arg2=%~2
echo|set /p=%arg1%
echo %arg2%
exit /b 0
您可以使用以下工具进行测试:

call lib.cmd foo "Hello World" !

它将打印
helloworld

用一个简单的
goto:%%~1
或者更好的
shift&goto:%%~1
@jeb来替换
呼叫:%%~1%~2….
,谢谢你的改进!