[英]Finding the folder name of .bat file
我需要找到我正在執行的批處理文件的文件夾名稱。 所有其他方法為我提供了完整的路徑。 我只需要父文件夾名稱。 此外,其他提到的方法使用循環,這是非常冗長和冗長的我需要。 是否有任何方法可以直接通過%參數(或它們的組合)找出父文件夾名稱?
你問題的直接答案是“不”。 沒有使用FOR循環或CALL,沒有直接使用擴展修飾符的方法。
你問題中引用的線程幾乎擁有你需要的一切。
以下是兩種與已發布的非常類似的優化技術。 Method1應該是最快的:
編輯 - 我通過刪除子字符串操作進一步優化。
Edit2 - 我用簡單的FOR代替FOR / F.
@echo off
setlocal
::method 1 using FOR
for %%F in ("%~p0\.") do set "method1=%%~nxF"
if not defined method1 set method1=\
::method 2 using CALL
call :getName "%~p0\." method2
::print results
set method
exit /b
:getName PathWithTrailing\. ReturnVar
set "%~2=%~nx1"
if not defined %~2 set %~2=\
exit /b
嘗試
echo %~dp0
在你的bat文件中。 %0是批處理文件的名稱。 ~dp為您提供指定參數的驅動器和路徑。
真的沒有一種簡單的方法可以做到這一點。 我知道你提到你不想要一個冗長的循環方法,所以這是一個簡短的循環方法:
for %%D in (.) do @echo %%~nD
請注意,此代碼僅適用於批處理文件。 在它之外,你應該使用%而不是%%。
你應該查看Rob van der Woude的腳本頁面 。 他在他的網站上有很多關於DOS腳本的好信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.