2013-02-18 93 views
3

在Windows(XP及更高版本)的批處理文件需要知道它位於目錄名的父文件夾的名稱,只有文件夾名稱,而不是整個路徑,而不是批處理文件自己命名。獲取當前正在執行的批處理腳本

所以存儲在文件C:\ TEMP \ ABC \ script.cmd應該得到一個變量名 「ABC」。

如何做到這一點?

%~p0這樣的常用參數擴展只能提取整個路徑(\ temp \ abc \),它們只能在真實參數(%0,%1,%2 ...)上工作而不能在其他變量上工作,所以它們不能堆疊或組合。所以他們對於這項任務太有限了。 for命令只能處理從開始處定義位置的標記,而不是「最後」或倒數第二個標記。

用於執行和可移植性的簡單性,它必須是一個批處理文件(.CMD),不PowerShell的。

+1

重複http://stackoverflow.com/questions/3848597/bat-current-folder-name – 2013-02-18 10:55:24

+2

@Kayasax - 有一個更好的方式來獲得父文件夾。 – dbenham 2013-02-18 12:16:59

回答

8

任何時候當你有文件的完整路徑時,你可以簡單地附加\..並使用帶有正確修飾符的FOR循環來獲取父文件夾名稱。

for %%A in ("%~f0\..") do set "myFolder=%%~nxA" 
+0

不錯的片段!+1 – 2013-02-18 12:54:28

相關問題