使用前请备份,以免数据丢失。还有可以先用部分数据测试。
其中 “Tmp_原名” 为中间文件,即去掉含 “错误” 字符串的行,因为无法整合处理,所以改用临时文件。
“new_原名” 为最终生成文件。 | @echo off | | echo 使用前请先备份好数据…… | | echo 备份好后按任意键开始。 | | pause>nul | | if not exist Not12\ md Not12 | | for /f "delims=" %%X in ('dir/b *.txt') do ( | | set flag= | | call :wordErr "%%X" | | call :judge12 "Tmp_%%X" | | if not defined flag for /f "usebackq skip=1 tokens=1-12* delims=∥" %%a in ("Tmp_%%X") do ( | | if not exist "new_%%X" call :firstL "%%X" | | echo %%a∥%%b∥?∥%%d∥%%e∥%%f∥%%g∥%%h∥%%i∥%%j∥%%k∥%%l>>"new_%%X" | | ) | | ) | | pause | | | | :firstL | | set/p first=<%1 | | echo %first%>"new_%~1" | | goto :eof | | :judge12 | | for /f "usebackq skip=1 tokens=1-12* delims=∥" %%a in (%1) do ( | | if "%%l"=="" set flag=1 | | if not "%%m"=="" set flag=1 | | ) | | if defined flag move "%~1" Not12 | | goto :eof | | :wordErr | | cd.>"Tmp_%~1" | | for /f "delims= eol=" %%i in ('findstr /v "<<錯誤>>" %1') do ( | | echo+%%i>>"Tmp_%~1" | | )COPY |
|