Batch file 在另一个批处理文件中访问批处理函数
好的,假设我们有一个名为“lib.cmd”的文件,它包含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
@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….
,谢谢你的改进!