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

标签 windows batch-file

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

例如:

我正在运行批处理文件 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/

相关文章:

Python - 编译后有两个进程?

c++ - 如何在 Opencv API 中实现 GPUImage 过滤器?

windows - 通过批处理文件卸载驱动程序

c++ - 在 Windows XP、Vista、7 和 8 中使用旧操作系统的兼容性功能有什么效果?

windows - 在 Windows 中跨本地文件系统的 GIT 克隆 repo

windows - 使用 ,[space] 加入 .txt 文件中的数字列表

c++ - 如何在 C++ 中连接两个 LPCWSTR

windows - 将输出重定向到 VAR 指定的文件名

windows - 当我在 double for 中使用 goto 时会发生什么?

java - Jenkins 构建不会在应该失败的时候失败