我有一个生成的txt文件。此文件具有某些多余的行,需要删除。我需要删除所有行,直到找到我要查找的序列“AA BB CC DD”并停止删除并保存为新文件。
因此,如果txt文件如下所示:
Good Line of data
bad line of C:\Directory\ERROR\myFile.dll
Another good line of data
bad line: REFERENCE
AA BB CC DD THis is the start of valid data
Line 2
Line 3
End
我希望新文件的结尾如下:
AA BB CC DD THis is the start of valid data
Line 2
Line 3
End
TIA。
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "output="
SET "string=AA BB CC DD"
(
FOR /f "USEBACKQdelims=" %%a IN ("c:\batch scripts\q22188484.txt") DO (
IF NOT DEFINED output (ECHO %%a|FIND "%string%" >NUL&IF NOT ERRORLEVEL 1 SET output=Y)
IF DEFINED output ECHO(%%a
)
)>"newfile.txt"
GOTO :EOF
我使用名为q22188484.txt
的文件进行测试;输出newfile.txt
修复:要允许fiename中的空格,需要引号但还需要USEBACKQ
选项。 newfile
同样修改以适应。
答案 1 :(得分:0)
这将显示where it matches the string
和99999 lines after it
之间的行,这些行在大多数情况下会一直持续到最后。为这个数字增加了另外9个近100万行。
搜索字词是正则表达式,因此如果您使用某些字符,则可能需要使用\
这使用名为findrepl.bat
的帮助程序批处理文件 - 从https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat
将findrepl.bat
放在与批处理文件相同的文件夹中或路径上。
type "file.txt"|findrepl "AA BB CC DD" /o:0:99999
答案 2 :(得分:0)
@echo off
setlocal
set "filename=C:\Batch Scripts\File Name.txt"
for /F "usebackq delims=:" %%a in ('findstr /N /C:"AA BB CC DD" "%filename%"') do set "line=%%a" & goto continue
:continue
(for /F "usebackq skip=%line% delims=" %%a in ('findstr "^" "%filename%"') do echo %%a) > newFile.txt