2015-09-06 128 views
2

假設我的目錄結構是..獲取父目錄的名稱

C:\ Program Files文件\ ABC \ myscript.bat

從myscript.bat

,所以我希望得到家長的名字這個腳本在本例中是abc。

請注意,我不想要完整的父路徑,我只需要像abc一樣的父母名稱。

實現此目的的簡單方法是什麼?

+2

[使用DOS批處理腳本獲取特定文件的父目錄名稱](http://stackoverflow.com/questions/2396003/get-parent-directory-name-for-a-particular-file-using -dos-batch-scripting) – wOxxOm

+0

所有你需要的是'echo%〜dp0' – npocmaka

+1

'set「p =%〜P0」'和'for %% a in(「%p:〜,-1%」)do echo %%〜Na' – Aacini

回答

5

也許最簡單的代碼可能是

for %%a in ("%~p0.") do echo(%%~nxa 

但是這個代碼有一個故障點,因爲你還沒有定義,當該批處理文件位於驅動器的根做什麼,那就是,當包含批處理文件的文件夾沒有名稱時該怎麼辦。

+0

+1'for %% a in(「%〜p0。」)do echo「%%〜nxa」'。然後,'D:\ bat \ SO \ 32423120.bat'返回'「SO」'和'D:\ bat \ 32423120.bat'返回''bat「'和'D:\ 32423120.bat'返回'」「 '。完美的作品,沒有失敗的地步! – JosefZ

+2

@JosefZ,是的,代碼在技術上是正確的,並且你指出它不會失敗,但是如果OP的代碼依賴於我的代碼,假設它將返回一個帶有文件夾名稱的字符串,但是返回的是一個空字符串,OP代碼可能會失敗。有必要明確定義代碼的行爲方式。沒有這個定義,我所能做的就是警告。 –

+0

@JosefZ簡而言之,如果腳本位於'C:\'或'\\ myserver \ myshare',它將返回什麼? –