如何从当前文件夹获取相对路径?

时间:2014-10-26 14:10:47

标签: path cmd

这是我目前使用FOR循环获得的:

FOR /R "ProgramFolder" %%P in (*) do (
echo %%P
)

C:\Folder\Folder2\ProgramFolder\Managed\bolt.dll
C:\Folder\Folder2\ProgramFolder\Resources\fmodstudio.dll
C:\Folder\Folder2\ProgramFolder\Plugins\dll\DynamicWaterNativeWrapper.dll 

如何获得这样的照片?

Managed\bolt.dll
Resources\fmodstudio.dll
Plugins\dll\DynamicWaterNativeWrapper.dll 

1 个答案:

答案 0 :(得分:2)

dbenham评论

已编辑

@echo off
    setlocal enableextensions disabledelayedexpansion

    pushd c:\somewhere\ProgramFolder
    for /f "tokens=1,* delims=\" %%a in (
        'xcopy . "%temp%" /l /s'
    ) do if not "%%b"=="" echo(%%b
    popd

此代码背后的基本思想是使用xcopy命令不复制,而是检索应使用相对路径处理的文件的列表(/l。要使其正常工作,必须先将当前活动目录更改为所需的目录(pushd)并使用对当前文件夹的相对引用(.

具有此配置的xcopy命令的输出将采用

形式
.\folder\folder\file.ext

要删除前缀点和反斜杠,for /f配置为使用斜杠作为分隔符,并在第一个反斜杠之前检索第一个标记(点),并将第二个标记的第二个标记作为第二个标记,是,相对路径

由于xcopy命令输出包含一个包含文件总数的附加行,并且此行将在脚本的输出中生成一个附加的空行,因此包含了一个附加的if弃掉这条线。