Windows

如何從命令行獲取目錄的最後一部分

  • July 20, 2016

如何將目錄的最後一部分儲存在變數中?

例如我有以下路徑: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%

引用自:https://serverfault.com/questions/246863