如何使用batch file删除文本文件中的前n行(在Windows上)

如何使用batch file删除文本文件中的前n行(在Windows上),第1张

概述如何使用batch file删除文本文件中的前n行(在Windows上)

我有不同数量的文本文件需要删除前26行。 我已经尝试了下面的蝙蝠,但它甚至不想完成第一个文本文件。 这些文件被命名为data(1).txt,data(2).txt,data(3).txt等等。

起初我试过…

more +26 "data (1).txt" > "data (1).txt.new" move /y "data (1).txt.new" "data (1).txt"

这工作,但要改变每个号码,因为我有约100个文本文件,这将是非常耗时。

所以然后试图做到以下。

批参数%〜s1给出错误的8.3短名称

检查驱动器号是否批量存在,否则转到另一段代码

'和'不被识别为内部或外部命令

.bat当前文件夹名称

如何从win cmd“dir”只获取文件大小?

for %%f in (*.txt) do ( more +26 "%%f" > "%%f.new" move /y "%%f.new" "%%f")

对我来说,这似乎应该工作,但事实并非如此,它只是拉起命令行并停在第一个文件,它创build了“新”文件,但看起来只是复制了一半的原始文本文件。 这些文件的大小从1MB到300MB。

所以我的问题很简单..我做错了什么,任何人都可以提供帮助/提示?

UPDATE

所以我一直在继续玩第二个选项,它似乎工作的文件高达125MB的东西,只是暂停,并没有完成 *** 作。 不知道是否有修复,或者使用batch file可能是一个更好的select。 再次,任何帮助表示赞赏。

UPDATE

我能够通过JAVA获得我正在寻找的东西。

SADD

import java.io.bufferedreader; import java.io.file; import java.io.filereader; import java.io.filewriter; public class cleanfiles { public static voID main(string[] args) throws exception { string currdir = system.getproperty("user.dir"); file inputdir = new file(currdir + file.separator + "input" + file.separator); file[] inputfiles = inputdir.Listfiles(); String outputdir = currdir + file.separator + "output" + file.separator; for (file inputfile : inputfiles) { if (inputfile.getabsolutepath().endswith(".txt") == false) {continue; } file outputfile = new file(outputdir + inputfile.getname() + ".csv"); bufferedreader reader = null; try { reader = new bufferedreader(new filereader(inputfile)); writer = new filewriter(outputfile); string line; while ((line = reader.readline()) !=null) { if (line.startswith("Point")) { writer.append(line); writer.append("rn"); break; } } while ((line = reader.readline()) !=null) { writer.append(line); writer.append("rn"); } } catch (exception e) { } finally { try { reader.close(); writer.flush(); writer.close(); } catch (exception e) {} } } } }

删除应用程序时,在UninstallString中有多个命令

windows批量转移在if块中不起作用

创build一个可以处理拖放多个文件的batch file

只有在windows命令提示符中存在父目录时,我如何删除文件?

使用batch file在不同的实例中打开多个Excel文件

我建议使用windows的sed 。 您需要从该页面链接的二进制文件和依赖项。 然后,你可以在命令行的for循环中选择sed "1,26d" infile >outfile来删除文件的前26行。 没有批处理文件需要。

for %I in (*.txt) do (sed "1,26d" "%I" >"%I.1" && move /y "%I.1" "%I")

注意:gnuwin32 sed有一个-i开关(用于内联处理),这会使语法变得简单一些,但是最后一次尝试它时,它为每个处理的实际文件留下了一个垃圾文件。 我建议不要使用它。

我从痛苦的经验中知道,使用流处理应用程序来处理大型文本文件要比批处理脚本技巧和for /f循环要快得多。

如果你想避免使用gnuwin32 sed并且倾向于使用powershell, 请参阅这个问题接受的答案 ,以便尝试一个有价值的方法。 不知道它是否会比sed更快或更快。 Bill_Stewart对此似乎很热心。 总结

以上是内存溢出为你收集整理的如何使用batch file删除文本文件中的前n行(在Windows上)全部内容,希望文章能够帮你解决如何使用batch file删除文本文件中的前n行(在Windows上)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1158519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存