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獲取當前目錄的方法,並且學習了如何處理帶有特殊字符的目錄名、如何獲取當前目錄的短文件名、如何列出當前目錄下的所有文件以及如何只列出特定類型的文件。這些方法將有助於我們更好地處理文件操作,並提高工作效率。
原創文章,作者:XIHIS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/368662.html