我有一个脚本,递归循环遍历工作目录和子目录中的所有.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
然后搜索此临时文件,但我希望有一个更好的方式。
答案 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