從絕對路徑 Windows 腳本中刪除子字串

從絕對路徑 Windows 腳本中刪除子字串

我是 Windows 腳本新手,我有像 - 這樣的絕對路徑/bin/debug/test/abc.xyz.dll,我想刪除檔案名稱並只取得像 output: 這樣的路徑/bin/debug/test/

我該怎麼做呢?

答案1

您可以為此使用循環的擴展功能FOR- 即使它不會“循環”:

@echo off
setlocal EnableExtensions
set "arg=%~1"
for /f %%A in ('echo %arg%') do echo %%~pA

您可以在其中使用完整檔案名稱呼叫此腳本,可能會引用以保護其中的空格。

編輯: 我使用的原始程式碼echo %%~nxA顯然是錯誤的,抱歉。它將檔案名稱與路徑隔離,並傳回檔案名稱。上面的程式碼現在只返迴路徑(不含磁碟機號)。

編輯2: 我很感謝@Karan 指出這可以縮寫為

@echo off
setlocal EnableExtensions
echo %~p1

因為擴展變數擴展語法不僅可以在FOR循環中使用,而且可以在論證擴展以及(參見 CALL /?)。

相關內容