【问题标题】:Get the name of parent directory in batch script在批处理脚本中获取父目录的名称
【发布时间】:2015-09-06 11:38:04
【问题描述】:

假设我的目录结构是..

C:\Program Files\abc\myscript.bat

所以我想从 myscript.bat 获取此脚本的父名称,在本例中为 abc。

请注意,我不想要父级的完整路径,我只想要像 abc 这样的父级名称。

实现这一目标的简单方法是什么?

【问题讨论】:

标签: windows batch-file cmd scripting


【解决方案1】:

可能是最简单的代码

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

但是这段代码有一个失败点,因为你还没有定义当批处理文件位于驱动器的根目录时要做什么,即当包含批处理文件的文件夹没有名字。

【讨论】:

  • +1 for %%a in ("%~p0.") do echo "%%~nxa"。然后,D:\bat\SO\32423120.bat 返回"SO"D:\bat\32423120.bat 返回"bat"D:\32423120.bat 返回""。完美运行,没有失败点!
  • @JosefZ,是的,代码在技术上是正确的,并且正如您所指出的那样它不会失败,但是如果 OP 的代码依赖于我的代码,假设它将返回一个名为文件夹,但返回的是一个空字符串,OP 代码可能会失败。有必要明确定义代码的行为方式。如果没有这个定义,我所能做的就是警告。
  • @JosefZ 简而言之,如果位于C:\ \\myserver\myshare,脚本会返回什么?
  • @JohnCastleman 让我们考虑没有区别:C:\32423120.batD:\32423120.bat 应该返回相同的零长度字符串(但我不会让我的 %SystemDrive% 根脏来检查它)。 有趣\\myserver\myshare\32423120.bat 返回myshare,而\\myserver\D$\32423120.bat 返回D$恕我直言UNC 路径的更好做法可能是pushd \\myserver\myshare(或pushd \\myserver\D$),然后使用%__cd__%32423120.bat
猜你喜欢
  • 1970-01-01
  • 2011-01-24
  • 2012-02-10
  • 2020-04-28
  • 1970-01-01
  • 2017-08-14
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多