如何获取相对于工作目录的路径?
How to get path relative to the working directory?
我有一个脚本,它递归循环遍历工作目录和子目录中的所有 .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
,然后在这个临时文件中搜索,但我希望有更好的方法。
试试这个。
@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
)
)
这是一种不同的方法,依赖于 xcopy
能够返回相对路径这一事实。由于我们不想复制任何东西,因此需要使用 /L
开关(列出但不复制)。
for /F "delims=" %%F in ('
xcopy /L /I /S ".\*.txt" "%TEMP%" ^| find ".\"
') do (
echo(Relative path to file: "%%~F"
rem // This block is only needed in case the leading `.\` disturbs:
set "FILE=%%~F"
setlocal EnableDelayedExpansion
echo(Relative path, no `.\`: "!FILE:*.\=!"
endlocal
)
我有一个脚本,它递归循环遍历工作目录和子目录中的所有 .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
,然后在这个临时文件中搜索,但我希望有更好的方法。
试试这个。
@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
)
)
这是一种不同的方法,依赖于 xcopy
能够返回相对路径这一事实。由于我们不想复制任何东西,因此需要使用 /L
开关(列出但不复制)。
for /F "delims=" %%F in ('
xcopy /L /I /S ".\*.txt" "%TEMP%" ^| find ".\"
') do (
echo(Relative path to file: "%%~F"
rem // This block is only needed in case the leading `.\` disturbs:
set "FILE=%%~F"
setlocal EnableDelayedExpansion
echo(Relative path, no `.\`: "!FILE:*.\=!"
endlocal
)