gpt4 book ai didi

windows - 获取父文件夹的相对路径

转载 作者:可可西里 更新时间:2023-11-01 11:45:43 27 4
gpt4 key购买 nike

我有一个巨大的批处理文件,我将其分成几个较小的文件,一个主文件分别调用每个较小的文件。为了整洁起见,我将各个脚本放在项目文件夹的子文件夹中(主脚本在项目文件夹中)。

然而,这导致了一个问题——我不知道如何更改新的单个脚本中的某些路径。布局大致如下:

Project
|---MasterScript.bat
|
|---Scripts
| |---scriptA.bat
|
|---Exes
| |---program.exe
| |---config.xml

所以主脚本调用每个批处理脚本 - A 和脚本 A 使用参数 /config 调用 program.exe配置.xml.

问题是如何处理 program.execonfig.xml

不幸的是,我只是在没有真正了解如何解析批处理文件路径的情况下将这些脚本一起破解,所以实际上不知道如何使用父文件夹等关系编写相对路径。

所以基本上我是在问一般如何编写相对批处理路径,特别是如何编写这些路径。

最佳答案

%~dp0 扩展到参数 0 的驱动器和路径,它是批处理文件本身。此文件路径引用始终扩展为带有反斜杠的路径。使用仅包含

的批处理文件进行尝试
@echo off
echo Batch file path is: "%~dp0"
pause

在多个显示页面的命令提示符窗口中运行 call/? 时的帮助输出中描述了如何在不使用或使用修饰符的情况下引用批处理文件的参数(参数、选项)。

简短的相对路径教程:

  1. 以目录名或文件名开头的路径是相对于当前目录的。

  2. .\ 开头的路径也相对于当前目录

  3. ..\开头的路径引用当前目录的父目录

  4. 仅以\ 开头的路径是相对于当前驱动器的根目录
    例如,\Windows 引用当前驱动器根目录中的目录 Windows,而与当前目录无关。

.\..\ 也可以在路径中几乎任何地方使用一次或多次。 .\..\ 不能用于驱动器字母和冒号,因为这意味着当前目录或父目录中指定的目录名称中包含冒号这是不可能的。

按顺序使用 ..\..\ 或更多 ..\ 有助于在相对于当前目录结构中向上引用 2 个或更多目录的路径目录。

在刚刚运行的应用程序上,使用 ~dp0..\Exes\program.exe 是绝对有效的。

在传递给应用程序或脚本的参数中使用绝对和相对路径组件的这种混合来引用其他目录或文件也没有问题。

但是,如果在将目录或文件名与路径传递到应用程序或脚本之前从纯相对路径或绝对和相对路径的混合确定真正的绝对完整路径,以获得更好的可读警告和错误,这通常是有帮助的包含传递的目录/文件名的消息。

命令FOR可用于从相对路径或绝对路径和相对路径的混合中获取目录或文件的完整路径。

例子:

@echo off
for /F %%I in ("%~dp0..\Exes") do set "FullExesPath=%%~fI"
echo Path to project executables: "%FullExesPath%"
pause

注意:此解析路径末尾没有反斜杠。在文件引用中使用 %FullExesPath% 时,必须在此目录引用和文件名之间键入反斜杠,这样可以使字符串更易于阅读。

有关命令 FOR 的详细信息,请在命令提示符窗口 for/? 中运行并仔细阅读输出帮助页面。

关于windows - 获取父文件夹的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45573065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com