c语言中文件的相对路径,从相对路径和/或文件名解析绝对路径

Adrien Pliss..

155

在批处理文件中,与标准C程序一样,参数0包含当前正在执行的脚本的路径.您可以使用%~dp0仅获取第0个参数的路径部分(这是当前脚本) - 此路径始终是完全限定的路径.

您也可以通过使用获取第一个参数的完全限定路径%~f1,但这会根据当前工作目录提供路径,这显然不是您想要的.

就个人而言,我经常%~dp0%~1在我的批处理文件中使用这个成语,它解释了相对于执行批处理路径的第一个参数.它确实有一个缺点:如果第一个参数完全合格,那就很糟糕.

如果您需要支持相对路径和绝对路径,您可以使用FrédéricMénez的解决方案:临时更改当前工作目录.

这是一个展示每种技术的例子:

@echo off

echo %%~dp0 is "%~dp0"

echo %%0 is "%0"

echo %%~dpnx0 is "%~dpnx0"

echo %%~f1 is "%~f1"

echo %%~dp0%%~1 is "%~dp0%~1"

rem Temporarily change the current working directory, to retrieve a full path

rem to the first parameter

pushd .

cd %~dp0

echo batch-relative %%~f1 is "%~f1"

popd

如果将其保存为c:\ temp\example.bat并从c:\ Users\Public中运行它

c:\ Users\Public>\temp\example.bat ..\windows

...你会看到以下输出:

%~dp0 is "C:\temp\"

%0 is "\temp\example.bat"

%~dpnx0 is "C:\temp\example.bat"

%~f1 is "C:\Users\windows"

%~dp0%~1 is "C:\temp\..\windows"

batch-relative %~f1 is "C:\Windows"

您可以同样处理`%0`和`%1`:`%〜dpnx0`用于完全限定的路径+批处理文件本身的名称,`%~dpnx1`用于完全限定的路径+其第一个参数的名称[如果这是文件名在所有].(但是,如果你不打算在命令行上提供完整的路径信息,你怎么能在不同的驱动器上命名文件?) (4认同)

这在NTFS符号链接上失败. (3认同)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值