如何查找当前批处理文件的名称并将其存储为变量?

时间:2014-04-10 06:56:48

标签: windows batch-file

我有一个批处理文件。什么是命令/如何找到当前正在运行的批处理文件的名称并将其存储为变量?

例如:

我正在运行批处理文件hello.bat,如何将名称(hello.bat)存储为变量。

2 个答案:

答案 0 :(得分:2)

set "myName=%~nx0"

在批处理文件中,%0是对批处理文件本身的引用。 %~nx0是批处理文件的名称和扩展名。 for /?帮助包括可以从文件引用中获取的可能值的完整列表,作为完整路径,文件大小,时间戳,....

已编辑 - 如评论中所述,使用shift命令(旨在获取%9将更高权限转移到较低参数后访问批处理文件参数)%0的值将被覆盖%1的内容,无法阅读其原始参考。所以,选项是

  • 在发出shift命令

  • 之前检索该值
  • 如果启用了扩展,shift命令允许指定从哪里开始移动参数,因此,不要发出shift命令,而是使用shift /1指示%1将成为第一个被覆盖的参数,并保护%0

  • 在调用子程序时获取批处理文件的名称。

myBatchFile.cmd

@echo off
    rem shifting arguments
    shift

    rem Get reference to current batch file
    call :getMyName
    echo %myName%

    exit /b

:getMyName
    set "myName=%~nx0"
    exit /b

答案 1 :(得分:0)

尝试类似

的内容
set "currentname=%~nx0"
echo %currentname%

或者

set "currentname=%~n0"
echo %currentname%