2015-09-06 118 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',它将返回什么? –