Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нумерация строк кроме первой

Ответить
Настройки темы
CMD/BAT - [решено] Нумерация строк кроме первой

Аватара для minutka15

Пользователь


Сообщения: 141
Благодарности: 11

Профиль | Отправить PM | Цитировать


Есть текстовый файл 1.txt где нужно пронумеровать все строки не затрагивая при этом самую верхнюю.

Что-бы стало

Постоянная строка
1=Строка один
2=Строка два
3=Еще строка

При помощи батника пронумеровываю


Код: Выделить весь код
@echo off
<1.txt>$ (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do @<nul set /p="%%a=%%b"& echo:)& >nul move $ 2.txt
Однако пронумеровывается и верхняя строка.

Как пронумеровать без затрагивания верхней строки ?

-------
We don't call 911


Отправлено: 19:15, 02-02-2023

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6545
Благодарности: 1493

Профиль | Отправить PM | Цитировать


Это CSV с заголовком, что ли?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 20:10, 02-02-2023 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для minutka15

Пользователь


Сообщения: 141
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Это CSV с заголовком, что ли? »
Нет, это ini файл.
Что-бы решить эту проблему я сперва удаляю первую строку
Код: Выделить весь код
@Echo Off
more +1 "1.txt" >"1.txt.new"
move /y "1.txt.new" "1.txt" >nul
Затем пронумеровываю
Код: Выделить весь код
@echo off
<1.txt>$ (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do @<nul set /p="%%a=%%b"& echo:)& >nul move $ 2.txt
И в последнюю очередь добавляю Постоянную строку
Код: Выделить весь код
Set "Mask=1.txt"
Set "Str=Постоянная строка"
FOR %%f IN ("%Mask%") DO (
more +1 %Mask% > "%%f.tmp" 
(Echo %Str% &More "%%f")>"%%f.tmp" 
	Move /Y "%%f.tmp" "%%f" >nul
)
exit /b
Получается как нужно но через белиберду
А хотелось бы одной строкой...

-------
We don't call 911


Отправлено: 21:12, 02-02-2023 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6545
Благодарности: 1493

Профиль | Отправить PM | Цитировать


Powershell
Код: Выделить весь код
$iniFile = "C:\temp\from\1.txt"

$ini = ($ini = gc $iniFile) |% {
    if ($ini.IndexOf($_) -ne 0) {$_ -replace "^","$($ini.IndexOf($_))="}
    else {$_}
}
$ini |Set-Content $iniFile
Результат
Код: Выделить весь код
Начало
1=один
2=два
3=три
4=четыре
5=пять
6=шесть
7=семь
8=восемь
9=девять
10=десять
11=одиннадцать
12=двенадцать
13=тринадцать
14=четырнадцать
15=пятнадцать
16=шестнадцать
17=семнадцать
18=восемнадцать
19=девятнадцать
20=двадцать

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 03-02-2023 в 08:45.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:22, 02-02-2023 | #4


Ветеран


Contributor


Сообщения: 2718
Благодарности: 1689

Профиль | Отправить PM | Цитировать


Вариант?
Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\Box_In\1.ini" 
	Set "FileOut=Z:\Box_In\1.ini.new"
	
	Set /A n=100000, i=0
	Set /P @@%n%=<"%FileIn%"
	FOR /F "usebackq delims=" %%b In (`2^>nul More +1 "%FileIn%"`) DO (
		Set /A n+=1, i=i+1
		Call Set "@@%%n%%=%%i%%=%%b"
	)
	>"%FileOut%" (FOR /F "usebackq tokens=1* delims==" %%b In (`2^>nul Set "@@"`) DO Echo %%c)
pause
Exit /B 0
FileIn и FileOut могут совпадать

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:42, 03-02-2023 | #5


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1267
Благодарности: 1025

Профиль | Отправить PM | Цитировать


Вариант 2?
Код: Выделить весь код
@echo off
(set i=0&for /f "tokens=1* delims=:" %%a in ('findstr /R /N "^" 1.txt') do if "%%~a"=="1" (echo:%%b) else (set /a i+=1&&call echo:%%i%%=%%b))>2.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:37, 03-02-2023 | #6


Аватара для minutka15

Пользователь


Сообщения: 141
Благодарности: 11

Профиль | Отправить PM | Цитировать


Вчера перед сном стал изобретать велосипед а изобрел самокат.

Код: Выделить весь код
@echo off
Set "Mask=1.ini"
Set "Str=Постоянная строка"
more +1 "%Mask%" >"1.ini.new"
move /y "1.ini.new" "%Mask%" >nul
<%Mask%>$ (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do @<nul set /p="%%a=%%b"& echo:)& >nul move $ %Mask%
FOR %%f IN ("%Mask%") DO (
more +1 %Mask% > "%%f.tmp" 
(Echo %Str% &More "%%f")>"%%f.tmp" 
	Move /Y "%%f.tmp" "%%f" >nul
)
exit /b
Батник сперва удаляет "Постоянная строка", затем идет нумерация и в конце добавляет "Постоянная строка".
Стыдно конечно за такой батник но тем не менее от рабочий.

megaloman,
Ваш батник делает все как надо - супер! Спасибо огромное!

El Sanchez,
Ваш вариант отличный, в одну строку!
Спасибо огромное!
добавил
move /y "2.txt" "1.txt" >nul
и получил что хотел.

Спасибо всем.

Тема решена

-------
We don't call 911


Отправлено: 15:19, 03-02-2023 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нумерация строк кроме первой

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2010 - Нумерация между строк seman Скриптовые языки администрирования Windows 8 11-07-2020 15:15
[решено] Автоматическая нумерация строк в Calc WSonic Хочу все знать 15 07-10-2016 09:25
CMD/BAT - Нумерация строк в файле ВиталийВ Скриптовые языки администрирования Windows 2 25-09-2015 19:06
2013 - Сквозная нумерация строк alleclf Microsoft Office (Word, Excel, Outlook и т.д.) 2 23-12-2014 11:15
CMD/BAT - [решено] Нумерация строк в cmd werov Скриптовые языки администрирования Windows 20 08-08-2011 12:22




 
Переход