Windows
如何從命令行獲取目錄的最後一部分
如何將目錄的最後一部分儲存在變數中?
例如我有以下路徑:
A\B\C\D
,我想儲存D
在變數中,如file_name=D
.
由於您的 Windows 標記,我假設您
cmd.exe
有內置的擴展。如果是這種情況,您可以使用兩個FOR
特殊的替換變數引用:給定一個包含路徑和文件的變數
%A
:
%~nA
將輸出文件名,%~xA
將輸出文件副檔名。以下範例使用管道字元|
作為分隔符。管道是文件和路徑的無效字元,不應出現在路徑中。這將允許路徑和文件名中的空格。有關FOR /?
完整詳細資訊,請參閱。C:\> SET FSPATH=C:\WINDOWS\Temp\file.txt C:\> echo %FSPATH% C:\WINDOWS\Temp\file.txt C:\> FOR /F "delims=|" %A IN ("%FSPATH%") do echo %~nxA file.txt
或者,如果您的 中沒有副檔名
cmd.exe
,您可以使用delims=\
, 計算目錄分隔符並根據該數字拆分路徑/文件字元串。**編輯:**根據您對錯誤的評論。上面是命令行上的一個例子。如果要在
%
批處理腳本中執行相同的操作,則需要將變數加倍:FOR /F "delims=|" %%A IN ("%FSPATH%") do echo %%~nxA
要在循環之外使用該值
FOR
,您需要將該值分配給另一個變數。該變數%%A
僅限於FOR
.:: example.bat SET FSPATH=C:\Windows\bfsvc.exe FOR /F "delims=|" %%A IN ("%FSPATH%") DO ( echo Inside loop %%~nxA SET SOMEFILE=%%~nxA ) ECHO Outside loop %SOMEFILE%