【问题标题】:batch scripting: how to get parent dir name without full path?批处理脚本:如何在没有完整路径的情况下获取父目录名称?
【发布时间】:2012-02-10 21:14:31
【问题描述】:

我正在编写一个处理文件夹的脚本,其中总是有一个文件需要重命名。新名称应该是父目录名称。我如何在批处理文件中获取它?目录的完整路径是已知的。

【问题讨论】:

    标签: variables batch-file directory parent


    【解决方案1】:

    目前还不清楚脚本应该如何熟悉相关路径,但以下示例至少应该让您了解如何继续:

    FOR %%D IN ("%CD%") DO SET "DirName=%%~nxD"
    ECHO %DirName%
    

    此脚本从CD 变量中获取路径,并仅从中提取名称到DirName

    【讨论】:

    • 要正确处理名称中包含点. 的文件夹名称,您应该改用%%~nxD
    【解决方案2】:

    你可以使用内置的bash技巧:

    FULLPATH=/the/full/path/is/known
    JUSTTHENAME=${FULLPATH##*/}
    

    解释:

    • 第一个# 表示“从头开始删除模式”
    • 第二个# 表示“删除可能更长的模式”
    • */ 是模式

    使用内置的bash 避免调用外部命令(即basename),因此这可以优化您的脚本。但是该脚本的可移植性较差。

    【讨论】:

    • 我不知道如何实现。看起来有点超出我的专业知识(不是我知道的任何可接受的命令)我需要一些演练
    • @cafevincent 请举例说明你有什么:你的目录,你的文件;您需要一行命令还是需要修改脚本?您说“已知目录的完整路径” => 变量名是什么?
    • 你是对的@FlorianBrucker。我混淆了batchbash :(
    【解决方案3】:

    你可以使用basename命令:

    FULLPATH=/the/full/path/is/known
    JUSTTHENAME=$(basename "$FULLPATH")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-25
      • 2011-01-02
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 2011-01-23
      • 2015-12-26
      • 1970-01-01
      相关资源
      最近更新 更多