Batch file 使用.bat(CMD)从TXT文件中删除所选行

Batch file 使用.bat(CMD)从TXT文件中删除所选行,batch-file,cmd,Batch File,Cmd,这是我的TXT文件: Volume in drive N is ABSdrive Volume Serial Number is BLA - BLA Directory of n:\ggg\gggg\ggg\ggggg 25/10/2016 09:46 138,813 gggggg.csv 1 File(s) 00000 bytes 0 Dir(s) 00000000 bytes free

这是我的TXT文件:

 Volume in drive N is ABSdrive
 Volume Serial Number is BLA - BLA

 Directory of n:\ggg\gggg\ggg\ggggg

25/10/2016  09:46           138,813 gggggg.csv
               1 File(s)        00000 bytes
               0 Dir(s)  00000000 bytes free
我需要的是只有这一行的.txt文件

25/10/2016  09:46           138,813 gggggg.csv
顶部或底部没有空行,只有一行包含此信息的文本文件


是否可以使用.bat文件进行编辑?

您只需使用findstr命令并将输出写入新的文本文件outfile.txt即可 然后,您可以在文件中搜索确切的字符串。但是,只有在搜索的字符串与行完全匹配时,才会将输出写入文件

findstr /x "25/10/2016  09:46           138,813 gggggg.csv" infile.txt > outfile.txt
有关findstr命令的更多信息,我建议打开一个新的cmd并键入

findstr /?

希望这有助于将文件夹拖放到此批处理文件

@Echo关闭
设置“SrcDir=%~1”
如果未定义SrcDir,则设置“SrcDir=%CD%”
(对于/F EOL^=^Delims^=^^%%A In('Dir/A-D“%SrcDir%”)Do Echo=%%A)>output.txt
它应该将output.txt文件输出到该文件夹。(如果未提供输入文件夹,则应向当前目录提供output.txt)

如果您只想解析文件中的数据,请按如下方式进行调整:

@Echo关闭
设置“SrcFile=%~1”
如果未定义文件退出/B
(对于/F UseBackQEOL^=^Delims^=^^%%A In(“%SrcFile%”)Do Echo=%%%A)>output.txt
只需将您的文件拖放到其上,或对其进行调整,以将%1替换为第二行的文件路径/名称。

使用a解析文本:

@echo关闭
对于/F“usebackq skip=5 delims=“%%E in”(“\path\to\your\text\file.txt”)执行以下操作(
设置“行=%%E”
后藤:退出
)
:退出
回音%行%
skip=5
选项告诉
for/F
忽略前五行。
goto
命令在读取第一个非跳过行后离开循环。因此变量
LINE
最终将保留感兴趣的行

您还可以检查变量是否已定义,以选择某一行文本,而不是使用
goto
,如下所示:

@echo关闭
设置“行=”
对于/F“usebackq skip=5 delims=“%%E in”(“\path\to\your\text\file.txt”)执行以下操作(
如果未定义行,则设置“行=%%E”
)
回音%行%

文本文件内容看起来像
dir
命令的输出(类似于
dir“n:\ggg\gggggg\ggg\gggggg\gggggggg.csv”
)。您可以通过
for/F
直接解析此类命令输出,而无需先将其存储到文本文件中——请参见:

@echo关闭
对于/F“skip=5 delims=“%%E in('dir”n:\ggg\gggg\ggg\gggggg.csv“)do(
设置“行=%%E”
后藤:退出
)
:退出
回音%行%
或:

@echo关闭
设置“行=”
对于/F“skip=5 delims=“%%E in('dir”n:\ggg\gggg\ggg\gggggg.csv“)do(
如果未定义行,则设置“行=%%E”
)
回音%行%

这是获取以数字开头的行,因为这是您在问题中需要的。

这是工作的一部分,每天都有不同的文件。可能有一种方法可以删除特定的第1-5行和第7-8行,只留下我需要的一行??或者将第6行复制到另一个.txt文件。Denis如果你问的是一个全新的问题,我建议将此问题标记为已完成并已回答,如果它满足了原始问题。对于你的评论,请看下面的链接或创建一个新问题嗨,丹尼斯,这是一个你必须处理的txt文件,还是你自己发布的dir cmd?是否只有一个文件具有预先确定的名称+ext?可能会有更多的文件,但我很乐意让它工作,即使是一个。尝试过,不工作。顺便说一句,我不需要将其设置为拖放,这应该是.bat文件的一部分。它可以很容易地将输入参数调整为文件内容,但是输出文件是dir命令的结果。dir命令应该被我发布的内容替换。(它也能工作,我比其他任何人都更经常使用相同的函数)。echo%LINE%>output.txt,你的代码非常适合。宾果!这是最简单、最快的解决方案。它可以很容易地调整为直接处理DIR命令的输出,而不需要临时文件:
DIR/a-d | findstr“^[0-9]”>targetfile.txt
findstr /r /c:"^[0-9]" yourfile.txt > targetfile.txt