我有一个批处理文件。什么是命令/如何找到当前正在运行的批处理文件的名称并将其存储为变量?
例如:
我正在运行批处理文件hello.bat
,如何将名称(hello.bat)存储为变量。
答案 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%