概述如何使用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上)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容