如何获取相对于工作目录的路径?

时间:2017-01-19 15:59:36

标签: windows batch-file for-loop relative-path

我有一个脚本,递归循环遍历工作目录和子目录中的所有.txt文件,并对该文件执行某些操作。现在我想排除exclude.txt文件中列出的某些子目录中的所有文件:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

for /r %%f in (*.txt) do (
    CALL:processFile %%f %%~df%%~pf
)
GOTO:EOF

:processFile
    SET file_=%~1
    SET path_=%~2                 <- %%~df%%~pf is the full path :(
    find "!path_!" exclude.txt
    IF !ERRORLEVEL! EQU 1 (
        REM do something here
    )
    GOTO:EOF

但是,%%/~df%%~pf会扩展到绝对路径。 如何获取相对于工作目录的路径?我只想列出exclude.txt中的子目录,而不是完整路径。

PS:我当然可以从exclude.txt读取相对路径,追加%cd%并将它们写入某些exclude.temp然后搜索此临时文件,但我希望有一个更好的方式。

2 个答案:

答案 0 :(得分:3)

试一试。

@ECHO OFF
SETLOCAL EnableDelayedExpansion

for /r %%F in (*.txt) do (
    echo %%F|findstr /I /G:exclude.txt >nul 2>&1
    IF NOT "!ERRORLEVEL!"=="0" (
        REM do something here
    )
)

答案 1 :(得分:1)

这是一种不同的方法,依赖于public abstract class Property{ public abstract bool equals (int value); public abstract int getCurrentValue(); } 能够返回相对路径的事实。由于我们不想复制任何内容,因此需要使用xcopy开关(列表但不复制)。

/L