我有一个脚本recursion地加载文件从一个特定的目录(和子目录)到一个java类path使用FOR循环。 它看起来像这样:
FOR / r 目录 %% F IN(* .jar)DO调用:addcp %% F
不幸的是,我现在需要从结果中排除一个特定的子目录(我不希望加载一些jar文件)。 我试图在FOR循环中嵌套一个IF语句,但是没有成功。
不幸的是,改变脚本语言不是一种select,迭代每个子目录将是一个维护的噩梦。 有没有人有办法做到这一点?
我尝试了这样的:
FOR / r 目录 %% F IN( * .jar)DO IF %% F == * string * DO call:addcp %% F
但它没有工作。
下面是一个脚本,用于转储“%ProgramFiles%”下的所有EXE文件的绝对path列表,除了那些在“Windows NT”子目录中的path。 我想你可能会打败这个提交你正在寻找的东西。
@echo off for /f "usebackq delims=" %%i in (`dir "%ProgramFiles%\*.exe" /s /a /b`) do call :checkit "%%i" goto end :checkit echo %1 | find /i "%ProgramFiles%\Windows NT\" >NUL 2>NUL if errorlevel 1 echo %~1 :end
我会推荐找,看看男的找。 就像find“%ProgramFiles%\”-iname“ .exe”! -regex“%ProgramFiles%\ folder_to-exclude。 $”-exec call:addcp {} \; 可能做你想做的事情。
%% Fparsing为.jar文件的path,而不是目录名,这就是为什么==不起作用。
我build议一个两步的过程 – 首先要做的
dir /s /b directory\*.jar > temp.txt
接着
for /F usebackq %%I in (`findstr /V <excluded path> temp.txt`) do call :addcp %%I
findtr打印的/ V参数打印出与传递的string不匹配的所有行。如果您真的需要,您应该可以使用通配符或甚至正则expression式来排除您的排除。