У меня есть много текстовых файлов, которые должны быть удалены из первых 26 строк. Я пробовал нижнюю биту, но он не хочет даже закончить первый текстовый файл. Файлы называются данные (1) .txt, данные (2) .txt, данные (3) .txt, ... и т.д.Как удалить первые n строк в текстовом файле с использованием командного файла (в Windows)
Сначала я попробовал ...
more +26 "data (1).txt" > "data (1).txt.new"
move /y "data (1).txt.new" "data (1).txt"
Это работало но было бы очень много времени для изменения каждого числа, поскольку у меня есть ~ 100 текстовых файлов.
Итак, тогда попытался сделать следующее.
for %%f in (*.txt) do (
more +26 "%%f" > "%%f.new"
move /y "%%f.new" "%%f")
Мне кажется, что это должно работать, но это не так, он просто тянет командную строку и киосков на первый файл, он создает файл «NEW», но похоже, что это только скопировали половину из исходный текстовый файл. Файлы находятся от 1 МБ до ~ 300 МБ каждый.
Так что мой вопрос прост. Что я делаю неправильно, и может ли кто-нибудь предоставить помощь/советы?
UPDATE
Так я продолжая играть со вторым вариантом, и это, кажется, работает для файлов до ~ 125 МБ ничего более, что и он просто делает паузу и не завершить операцию. Не уверен, есть ли исправление для этого или, возможно, лучший вариант, а затем использовать командный файл. Снова любая помощь приветствуется.
UPDATE
Я был в состоянии получить то, что я искал через JAVA.
Садд
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("\r\n");
break;
}
}
while ((line = reader.readline()) !=null) {
writer.append(line);
writer.append("\r\n");
}
} catch (exception e) {
} finally {
try {
reader.close();
writer.flush();
writer.close();
} catch (exception e) {}
}
}
}
}
Вы пробовали использовать 'xargs'? – robertjd
@robertjd У меня есть доступ к окнам при попытке выполнить эту задачу. – Matt
Вместо этого используйте PowerShell. –