Пакетная вставка номера строки в каждой строке - PullRequest
0 голосов
/ 07 февраля 2019

У меня небольшая проблема, и я не могу сейчас ужиться.Я хотел бы пакетного импорта файла .txt и вывести его с номерами строк в другой .txt.Например, файл test.txt выглядит следующим образом:

hello
how 
are 
you

Результатом должен быть файл test2.txt, который должен выглядеть следующим образом:

1: hello
2: how
3: are
4: you

Я пробовал следующую партиюно, к сожалению, я получаю только пустой файл в качестве вывода:

@echo off
setlocal enabledelayedexpansion
findstr / n; test.txt >test2.txt

У кого-нибудь есть идея?Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Самое простое решение, вероятно, заключается в использовании findstr, например:

findstr /N "^" "test.txt" > "test_NEW.txt"

Приведенная выше командная строка относится к пустым строкам.Чтобы игнорировать и удалить их, сделайте следующее:

findstr /N /V "^$" "test.txt" > "test_NEW.txt"

Чтобы заменить исходный файл, просто выполните следующее:

move /Y "test_NEW.txt" "test.txt" > nul

С учетом того, что нет ПРОБЕЛ вставляется после двоеточия, следующего за номером строки.

0 голосов
/ 07 февраля 2019

Эта версия будет записывать с test.txt в test2.txt:

@echo off
setlocal enabledelayedexpansion

set "myfile=test.txt"
set "outputfile=test2.txt"

for /f "tokens=*" %%a in ('type "%myfile%" ^| find /v /n "" ^& break ^> "%myfile%"') do (
     set "str=%%a
     set "str=!str:]=: !"
     set "str=!str:[=!"
     >>%outputfile% echo(!str!
  )

Эта версия будет записывать обратно в исходный файл test.txt и записывать обратно в test.txt, перезаписывая его:

@echo off
setlocal enabledelayedexpansion

set "myfile=test.txt"

for /f "tokens=*" %%a in ('type "%myfile%" ^| find /v /n "" ^& break ^> "%myfile%"') do (
     set "str=%%a
     set "str=!str:]=: !"
     set "str=!str:[=!"
     >>%myfile% echo(!str!
  )

Что будет делать то, что вы хотите:

1: hello
2: how 
3: are 
4: you

Примечание , это также будет нумеровать \n другими словами новые пустые строки.Так, например, если у вас есть:

hello

how 
are 
you

Это приведет к:

1: hello
2:
3: how 
4: are 
5: you
...