簡體   English   中英

查找.bat文件的文件夾名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM