如何在标签中获取正在运行的批处理文件的名称?

时间:2017-01-01 06:19:44

标签: windows batch-file

当我跑步时

call :label
:label
echo %~0
pause

而不是回显" C:\ Users \ Me \ Desktop \ Batch.bat",它回声":标签"。 我希望能够回应" C:\ Users \ Me \ Desktop \ Batch.bat"而不是回应":标签"。

我不想在调用之前求助于存储%~0:标签。

可以吗?如果是这样,怎么办呢?

2 个答案:

答案 0 :(得分:4)

没有任何特殊要求让它正常工作

@echo off
    setlocal enableextensions disabledelayedexpansion

    call :label
    goto :eof

:label
    echo %0
    echo %~f0
    echo %~nx0

此代码将显示

W:\test>labelTest.cmd
:label
W:\test\labelTest.cmd
labelTest.cmd

如果使用引用文件名/路径/ ...元素的%0子例程参数的任何修饰符,它们将强制使用批处理文件作为数据源而不是标签名称。

答案 1 :(得分:3)

call :label "%~0"
:label
echo %~0 %~1
pause

但重点是逃避了我。