@echo off
set "bf=1.txt"
(for /f "usebackq tokens=1-2*" %%a in ("%bf%") do (
findstr /r "%%b\>" "D:\新建文件夹\*.txt" >nul&&if %%b gtr 500000 (echo +%%b) else echo -%%b))>>result.txt
pause
将要用于查找的文件(1.txt)和批处理放在一起,也可设置1.txt路径.将1.txt和要查找的文件分开存放,这样代码执行更有效率.下面的代码可以直接将批处理和要查找的文件放在一起使用.
@echo off&setlocal enabledelayedexpansion
set "bf=1.txt"
(for /f "usebackq tokens=1-2*" %%a in ("%bf%") do (set n=
for /f "delims=" %%i in ('dir /a-d/b *.txt^|findstr /vr "%bf%\>"') do (
findstr /r "%%b\>" "%%i" >nul&&(set /a n+=1))
if !n! gtr 0 (if %%b gtr 500000 (echo +%%b) else echo -%%b)))>>result.txt
pause
批处理可能难以实现,建议导入EXCEL用函数处理。如果这类工作固定模式频繁重复,找人写个小程序,或在ACESS中处理。
刚完成,我按您的描述做了3个txt,1.txt、2.txt、3.txt,把下面的批处理存为findstr.bat,放在同一个文件夹下,运行就行了。我在XP下测试通过了。
@echo off
@setlocal ENABLEDELAYEDEXPANSION
@for /f "tokens=2 delims= " %%i in (1.txt) do (
@find "%%i" 2.txt >nul
@set r=!errorlevel!
@find "%%i" 3.txt >nul
@set /a r+=!errorlevel!
@if !r!==0 (
@set f=%%i
@set f=!f:~0,1!@if !f! GEQ 5 (@echo +%%i) else (@echo -%%i)
)
)
@endlocal
@pause
结果应该完全符合您的要求,不过我假定各列之间是用空格分隔的。