Удалить строку текстового файла с пакетом

Я видел, что в пакетном режиме, чтобы удалить конкретную строку из текстового файла, нужно делать это с помощью findstr, которые позволяют найти свою строку, а затем удалить ее. Но есть ли способ сделать это, когда вы не знаете линию? У меня есть другая программа, которая заливает файл и пакет должен удалить первую строку. Кто-нибудь знает как это делать ?

Я пробовал с чем-то, что читает строку из индекса, а затем использует то, что я получил с помощью findstr, но это не работает:

@echo off
setlocal EnableDelayedExpansion
set count=1
for /f "tokens=*" %%a in (test.txt) do (
if !count! equ 1 (set "TIMER=%%a")
if !count! equ 1 (type test.txt | findstr /v %TIMER%)
set /a count+=1
)
echo %TIMER%
timeout %TIMER%
for /f "tokens=*" %%a in (test.txt) do (
echo %%a
)
pause

Он говорит мне: FINDSTR: неправильная командная строка (в Интернете был найден фрагмент кода для цикла по строкам файла и поиска определенной строки)

Так в чем проблема? Или, может быть, кто-то знает что-то вроде delete (x), и он удаляет строку? Просто то, что требует ИНДЕКС... ^^'

(Последний цикл for используется для проверки того, была ли строка удалена между прочим)

Заранее спасибо за любую помощь!


person Quantum Sushi    schedule 29.06.2020    source источник
comment
Самый простой способ воспроизвести текстовый файл без его первой строки, если не возникает проблем с преобразованием содержащихся табуляций в пробелы, это: @"%__AppDir__%more.com" +1 "test.txt" > "modifiedtest.txt"   -  person Compo    schedule 29.06.2020
comment
@HackingAddict1337: это гениально. Вы хотите, чтобы это превратилось в ответ?   -  person Stephan    schedule 29.06.2020
comment
Большое спасибо вам обоим, HackingAddict1337 и Compo, я получил свое решение, и вы мне помогли! Спасибо еще раз ! ^^   -  person Quantum Sushi    schedule 01.07.2020


Ответы (2)


Ваш код в основном не работает из-за отсутствия задержанного расширения.

Но есть более простые способы достижения цели. Если предложение Compo (more.com" +1 "test.txt" > "modifiedtest.txt") не работает для вас (необходимо сохранить TAB или удалить другую строку, кроме первой), вам может подойти следующее:

@echo off
setlocal
set file=test.txt
set lineToDelete=1
(for /f "tokens=1* delims=:" %%a in ('findstr /N "^" "%file%" ^|findstr /bv "%lineToDelete%:"') do echo/%%b) > "%file%.tmp
move /y "%file.tmp%" "%file%"
person Stephan    schedule 29.06.2020
comment
Большое спасибо, это сработало! Я искал хороший момент, но не нашел решения, вы меня спасли, ха-ха! - person Quantum Sushi; 01.07.2020

Чтобы удалить из файла первые n строк без преобразования табуляции в пробелы:

@echo off
>RemoveFirstLine.txt <test.txt (
    FOR /L %%N in (1 1 1) do set/p"=" SKIP N lines
    %__APPDIR__%findstr.exe /R "^"
)

Это работает, поскольку FINDSTR перемещает указатель из STDIN, а FIND и MORE нет.

person HaxAddict1337    schedule 03.07.2020
comment
Спасибо ! Я уже получил свое решение, но это все еще полезно ^^ - person Quantum Sushi; 06.07.2020