如何在函数中找到bat文件名

时间:2014-07-09 19:08:28

标签: batch-file

bat文件的名称是第0个参数%0%。但是在标签内部,当标签作为函数调用时,使用call:语法,它就是标签本身:

@echo off
echo in bat file:%0%
echo calling..
call :USAGE
echo goto..
goto :USAGE
goto :EOF

:USAGE
echo in label:%0%
goto :EOF

在名为t.bat的文件中,这将产生以下内容:output

C:\builds>c:\tmp\t.bat
in bat file:c:\tmp\t.bat
calling..
in label::USAGE
goto..
in label:c:\tmp\t.bat

有没有办法在:call

中获取bat文件名

2 个答案:

答案 0 :(得分:1)

这不是您正在寻找的,但您可以在调用标签时将批处理文件名指定为参数,从而使其可用作标签执行中的第一个参数:

@echo off

echo My batch file is %0
call :USAGE %0
goto :EOF

:USAGE
echo USAGE my batch file is %1

输出:

  

d:\温度> test.bat的
  我的批处理文件是test.bat
  使用我的批处理文件是test.bat

答案 1 :(得分:0)

在标签内的%0上使用任何变量引用修饰符以获取对当前批处理文件的引用

@echo off
    setlocal enableextensions

    call :label

    endlocal
    exit /b

:label

    echo label : %0 
    echo file  : %~f0
    echo file  : %~nx0
    goto :eof
相关问题