我有一个批处理文件。命令是什么/如何找到当前正在运行的批处理文件的名称并将其存储为变量?
例如:
我正在运行批处理文件 hello.bat
,如何将名称 (hello.bat) 存储为变量。
最佳答案
set "myName=%~nx0"
在批处理文件中,%0 是对批处理文件本身的引用。 %~nx0
是批处理文件的名称和扩展名。 for/?
帮助包括您可以从文件引用中获取的可能值的完整列表,如完整路径、文件大小、时间戳......
已编辑 - 如评论中所述,使用 shift
命令(旨在在 %9
将较高的参数移至较低的参数后获得对批处理文件参数的访问权限)%0
被 %1
的内容覆盖,无法读取其原始引用。所以,选项是
在发出
shift
命令之前检索值如果启用了扩展,
shift
命令允许指定从哪里开始移动参数,因此,不用发出shift
命令,而是使用shift/1
表示%1
将被第一个参数覆盖,并保护%0
在调用子程序时获取批处理文件的名称。
我的批处理文件.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
关于windows - 如何找到当前批处理文件的名称并将其存储为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22980747/