Batch file 如何忽略FOR循环中文本文件处理行中特定单词后的所有行?
我的问题是使用Batch file 如何忽略FOR循环中文本文件处理行中特定单词后的所有行?,batch-file,lines,Batch File,Lines,我的问题是使用skip=3解决的是关于列的问题,而不是关于行的问题。这忽略了前三行。那么,在下面的示例中,忽略第一个end单词后面的所有行怎么样 1121.19, 1638.66, 16.6098, -4.7339, -4.7339, 2.5, hash:0, -1, -1, -1, -1, 1888, 0, 0 971.597, 1815.17, 21.085, 1.39876E-006, 8, 4, hash:0, -1, -1, -1, -1, 1905, 0, 0 971.597, 18
skip=3
解决的是关于列的问题,而不是关于行的问题。这忽略了前三行。那么,在下面的示例中,忽略第一个end
单词后面的所有行怎么样
1121.19, 1638.66, 16.6098, -4.7339, -4.7339, 2.5, hash:0, -1, -1, -1, -1, 1888, 0, 0
971.597, 1815.17, 21.085, 1.39876E-006, 8, 4, hash:0, -1, -1, -1, -1, 1905, 0, 0
971.597, 1825.45, 21.085, 1.39876E-006, 8, 4, hash:0, -1, -1, -1, -1, 1905, 0, 0
end
tcyc
end
mlop
end
lodm
end
slow
end
blok
end
因此,我想忽略所有不是我的基本格式的行,即:
971.597, 1825.45, 21.085, 1.39876E-006, 8, 4, hash:0, -1, -1, -1, -1, 1905, 0, 0
需要哪个代码来忽略从第一个结束
字到文件结尾的所有行,该文件将忽略示例输入中的以下行:
end
tcyc
end
mlop
end
lodm
end
slow
end
blok
end
以下是我目前掌握的代码:
if exist 12.txt del 12.txt
FOR /F "skip=3 tokens=1-8* delims=," %%A IN (C:\Users\Sherlock\Documents\3DReaperDX\Frames\1.txt) do >>12.txt echo model:%%H tx:%%A ty:%%C tz:%%B rx:%%D ry:%%F rz:%%E
此第一批文件检查echo行中使用的所有循环变量是否具有非空字符串,这将导致忽略除前3行之外的所有行
@echo off
setlocal EnableExtensions
set "OutputFile=12.txt"
del "%OutputFile%" 2>nul
for /F "usebackq tokens=1-8* delims=," %%A in ("C:\Users\Sherlock\Documents\3DReaperDX\Frames\1.txt") do (
if "%%A" NEQ "" (
if "%%B" NEQ "" (
if "%%C" NEQ "" (
if "%%D" NEQ "" (
if "%%E" NEQ "" (
if "%%F" NEQ "" (
if "%%H" NEQ "" (
>>"%OutputFile%" echo model:%%H tx:%%A ty:%%C tz:%%B rx:%%D ry:%%F rz:%%E
)
)
)
)
)
)
)
)
endlocal
第二个批处理文件处理从包含字符串end
不区分大小写的行到第一行
@echo off
setlocal EnableExtensions
set "OutputFile=12.txt"
del "%OutputFile%" 2>nul
for /F "usebackq tokens=1-8* delims=," %%A in ("C:\Users\Sherlock\Documents\3DReaperDX\Frames\1.txt") do (
if /I "%%A" EQU "end" goto ContinueAfterLoop
>>"%OutputFile%" echo model:%%H tx:%%A ty:%%C tz:%%B rx:%%D ry:%%F rz:%%E
)
:ContinueAfterLoop
endlocal
顺便说一下:
%USERPROFILE%
与C:\Users\Sherlock
相同,如果用户帐户名是Sherlock
,此第一批文件检查echo行中使用的所有循环变量是否都有非空字符串,这将导致忽略除前3行之外的所有行
@echo off
setlocal EnableExtensions
set "OutputFile=12.txt"
del "%OutputFile%" 2>nul
for /F "usebackq tokens=1-8* delims=," %%A in ("C:\Users\Sherlock\Documents\3DReaperDX\Frames\1.txt") do (
if "%%A" NEQ "" (
if "%%B" NEQ "" (
if "%%C" NEQ "" (
if "%%D" NEQ "" (
if "%%E" NEQ "" (
if "%%F" NEQ "" (
if "%%H" NEQ "" (
>>"%OutputFile%" echo model:%%H tx:%%A ty:%%C tz:%%B rx:%%D ry:%%F rz:%%E
)
)
)
)
)
)
)
)
endlocal
第二个批处理文件处理从包含字符串end
不区分大小写的行到第一行
@echo off
setlocal EnableExtensions
set "OutputFile=12.txt"
del "%OutputFile%" 2>nul
for /F "usebackq tokens=1-8* delims=," %%A in ("C:\Users\Sherlock\Documents\3DReaperDX\Frames\1.txt") do (
if /I "%%A" EQU "end" goto ContinueAfterLoop
>>"%OutputFile%" echo model:%%H tx:%%A ty:%%C tz:%%B rx:%%D ry:%%F rz:%%E
)
:ContinueAfterLoop
endlocal
顺便说一下:%USERPROFILE%
与C:\Users\Sherlock
相同,如果用户帐户名是Sherlock