下面是该任务只用于那些线由命令FOR跳过不包含空行的输入的文本文件的工作间歇代码。
它删除所有块与3行,其中第一行包含returns
。
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "SkipLineCount=0"
set "OutputFile=OutputTextFile.txt"
del "%OutputFile%" 2>nul
for /F "usebackq eol=^ delims=" %%I in ("InputTextFile.txt") do (
if !SkipLineCount! EQU 0 (
set "Line=%%I"
set "Line=!Line:returns=!"
if "!Line!" NEQ "%%I" (set "SkipLineCount=1") else echo(%%I>>"%OutputFile%"
) else (
set /A SkipLineCount+=1
if !SkipLineCount! EQU 3 set "SkipLineCount=0"
)
)
move /Y "%OutputFile%" "InputTextFile.txt"
endlocal
此批处理文件处理每个非空行。命令FOR自动跳过所有不包含任何字符的行。
注1:eol=^
与命令线FOR是必要的,读取和输出也只是线包含逗号或分号否则会由命令也忽略FOR。
如果当前不应跳过行,则将当前行分配给变量Line
。接下来,如果该行至少包含一个returns
,那么所有出现的字returns
都将从该行中删除不区分大小写。
如果字符串替换为从文件读取的未修改行后,变量Line
的字符串不相等,则行被忽略,因为这意味着该行至少包含一个returns
。
否则从输入文件中读取的行被追加到输出文件。
注2:echo
和%%I
之间(
这里使用仅含有1个或多个空格或制表符作为以其他方式与一个空间,而不是(
命令回声会写为这样的情况下其当前状态输出还输入线OFF
转换为输出文件,而不是从输入文件读取的空格/制表符。
在至少有一个returns
的行后面的下两行也被复制到输出文件时被忽略。
作为最后一个命令,将移除了3行的已创建输出文件移到输入文本文件上。
为了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
del /?
echo /?
for /?
if /?
move /?
set /?
setlocal /?
请阅读微软有关Using Command Redirection Operators的文章。
请提供你为你的问题所作的努力简短。提供您尝试过的代码块或类似的东西。请参阅:http://stackoverflow.com/help/how-to-ask –
我只是可以用另一个替换一个词,所以这在这里没有用吗? –