您的位置:

BAT 获取当前目录

BAT是Windows下的脚本语言之一,通过编写一些BAT批处理文件,我们可以完成一些简单但重复的工作。这篇文章主要介绍如何使用BAT获取当前目录。

一、获取当前目录的基本方法

要想获取当前目录,我们可以使用如下命令:

@echo off
echo 当前目录:%cd%

代码中的 %cd% 是一个环境变量,表示当前目录。通过 echo 命令输出即可。

下面是完整的代码,保存为 get-curr-dir.bat 后双击即可运行:

@echo off
echo 当前目录:%cd%
pause

执行该文件后,命令行窗口会显示当前目录。同时会停顿,直到用户按下任意键退出。

二、去掉当前目录中的引号

当当前目录中包含有空格等特殊字符时,命令行窗口会将其用双引号括起来,如下所示:

当前目录:"C:\Program Files"

为了进一步处理当前目录,我们需要去掉这些双引号,可以使用如下代码:

@echo off
setlocal EnableDelayedExpansion
set "dir=%cd:"=%"
echo 当前目录:%dir%
pause

代码中使用 setlocal 开启了局部变量的设置功能。然后使用 EnableDelayedExpansion 选项开启了延迟环境变量扩展,因为后面需要使用 !cd! 命令。

接下来,把 %cd% 的值传给 dir 变量,同时使用替换方式把双引号去掉。最后使用 echo 命令输出即可。

三、获取当前目录的短文件名

在Windows系统下,每个文件都有一个长文件名和一个短文件名。短文件名是系统自动生成的一个类似于 8.3 的格式,方便一些老的应用程序调用。如果要获取当前目录下文件的短文件名,可以使用如下代码:

@echo off
setlocal EnableDelayedExpansion
set "dir=%cd:"=%"
for /f %%a in ('dir /x /ad /b "!dir!"') do (
    set "dir=%%a"
)
echo 当前目录:%dir%
pause

代码中使用 for 命令遍历当前目录下的所有目录(/ad),并且使用 /x 参数显示它们的短文件名。然后使用 /b 参数把输出结果转换成纯文本格式。

由于目录名可能包含空格,因此需要使用延迟环境变量扩展和双引号进行引用。

由于 for 命令的工作方式,%dir% 的值会不断被修改为当前目录下遍历到的每一个目录的短文件名,直到最后一次遍历完毕。因此,只需要在遍历结束后输出 %dir% 的值即可得到当前目录的短文件名。

四、获取当前目录中的所有文件

如果要列出当前目录下的所有文件,可以使用如下代码:

@echo off
setlocal EnableDelayedExpansion
set "dir=%cd:"=%"
for /f "delims=" %%a in ('dir /b "!dir!"') do (
    echo %%a
)
pause

代码中的 for 命令会遍历当前目录下的所有文件,并使用 echo 命令输出文件名。

需要注意的是,for 命令默认会以空格为分隔符,因此需要使用 "delims=" 参数指定分隔符为空,否则文件名中的空格会被切分。

五、获取当前目录中特定类型的文件

如果要只列出当前目录下的某一种特定类型的文件,可以使用如下代码:

@echo off
setlocal EnableDelayedExpansion
set "dir=%cd:"=%"
for /f "delims=" %%a in ('dir /b "!dir!\*.txt"') do (
    echo %%a
)
pause

代码中的 for 命令会遍历当前目录下的所有以 .txt 结尾的文件,并使用 echo 命令输出文件名。

需要注意的是,dir 命令使用了通配符 *,因此不同的文件类型需要修改命令中的通配符。

六、总结

通过这篇文章的学习,我们掌握了如何使用BAT获取当前目录的方法,并且学习了如何处理带有特殊字符的目录名、如何获取当前目录的短文件名、如何列出当前目录下的所有文件以及如何只列出特定类型的文件。这些方法将有助于我们更好地处理文件操作,并提高工作效率。