【问题标题】:Batch - Resolve relative path批处理 - 解析相对路径
【发布时间】:2015-01-26 09:47:34
【问题描述】:

我的批处理脚本位于以下目录:

\\test\public\windows\scripts\32\test.bat

我正在尝试获取此文件夹的路径:\test\public\windows\logs 我已经尝试使用%~dp0 来获取脚本的路径,并且我已经尝试过:

SET REL_PATH=..\..\

问题是它没有显示这个文件夹。

【问题讨论】:

    标签: windows batch-file cmd relative-path


    【解决方案1】:
    SET REL_PATH=..\..\
    

    path根据你的路径指向,要验证它是从哪里取的,请做一个

    echo %CD%
    

    它会告诉你系统正在查看的路径。

    然后将相对路径从%CD% 设置为脚本的路径。

    如果您在执行此操作后遇到困难,请发表评论。

    例如

    echo %CD%
    

    C:\windows\system32

    你想在c:\test\public\windows\scripts\32\test.bat执行批处理文件

    你需要做的

    SET REL_PATH=%CD%\..\..\test\public\windows\scripts\32\
    

    要移动到此路径,请执行以下操作:

    cd /d %REL_PATH%
    

    要解决 UNC 路径,请执行 PUSHD 和 POPD:

    @echo off
    pushd \\test\public\windows\scripts\32\
    
    REM do your work
    call test.bat
    
    popd
    

    参考:How to run batch file from network share without "UNC path are not supported" message?

    【讨论】:

    • 路径是c:\windows,变量REL_PATH没有给我任何东西
    • 发生这种情况是因为我使用的是UNC 路径吗?
    • 据我了解,您的批处理文件位于共享网络驱动器中,您想从您的机器上执行它...对吗?
    • 也许您只需要将您的 UNC 路径映射为普通路径。也许通过NET USEMKLINK。完成后,路径操作可能会容易得多。
    【解决方案2】:

    使用网络驱动器时使用PUSHD 命令。这将为 UNC 路径分配一个未使用的驱动器号,以便您可以正常导航它。然后你可以使用POPD释放它。

    例如:

    @ECHO OFF
    
    PUSHD "\\test\public\windows\scripts\32"
    
    REM This will be \\test\public\windows
    DIR ".\..\..\"
    
    POPD
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 2012-04-30
      • 2014-01-15
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      相关资源
      最近更新 更多