|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавить в начало каждой строки ее номер |
|
|
CMD/BAT - Добавить в начало каждой строки ее номер
|
Новый участник Сообщения: 22 |
Как добавить на начало каждой строки ее номер.
Есть база синонимов в .txt файле такого типа: вздваивание|сдвоение вздваивать|удваивать вздваиваю|удваиваю Нужно переделать и сделать так: (1, 'вздваивание|сдвоение'), (2, 'вздваивать|удваивать'), (3, 'вздваиваю|удваиваю'), Нашел в интернете батник который добавляет символы в конец каждой строки, можно и в начало строки (#^%i): А вот как добывить № не нашел... |
|
Отправлено: 17:45, 16-11-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Пробуйте:
Скрытый текст
@echo off setlocal enableextensions enabledelayedexpansion set sSourceFile=%~1 call :GetTemporaryName if defined sSourceFile ( if exist "%sSourceFile%" ( set /a iCount = 0 >"%TemporaryName%" ( for /f "usebackq delims=" %%i in ("%sSourceFile%") do ( set /a iCount += 1 echo ^(!iCount!, '%%i'^), ) ) >nul copy /y "%sSourceFile%" "%~dpn1.bak" >nul copy /y "%TemporaryName%" "%sSourceFile%" del /f /q "%TemporaryName%" ) else ( echo Can't find source file [%sSourceFile%]. exit /b 2 ) ) else ( echo Usage: %~nx0 ^<Source file^> exit /b 1 ) endlocal exit /b 0 rem ========================================================================== rem Функция GetTemporaryName() rem rem Серый форум / CMD/BAT: генерация пути для временного файла или папки rem (http://forum.script-coding.com/viewtopic.php?id=6259) rem ========================================================================== :GetTemporaryName setlocal enableextensions enabledelayedexpansion :NextName set sTempName=%temp%\temp%random%.tmp if exist "%sTempName%" goto :NextName set sProcName=%~0 endlocal & set %sProcName:~4%=%sTempName% exit /b 0 rem ========================================================================== Можно просто перетащить исходный файл поверх командного файла в Проводнике. Пустые строки будут пропущены. |
Отправлено: 19:23, 16-11-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 22
|
Профиль | Отправить PM | Цитировать Iska, спасибо большое, работает как часы...
Начал уже через Linux номера строк через консоль собирать такой командой: sed '/./=' baza.txt | sed '/./N; s/\n/, /' Вот только консоль с кириллицей не дружит и номера строк почему то неправильные ![]() если нетрудно, есть формат синонимов только уже через запятую: весьма,очень ветвей,веток ветви,ветки Нужно переделать и сделать так: (1, 'весьма|очень'), (2, 'ветвей|веток'), (3, 'ветви|ветки'), |
Последний раз редактировалось papacoca, 16-11-2014 в 21:14. Причина: Ошибка Отправлено: 21:08, 16-11-2014 | #3 |
Ветеран Сообщения: 1758
|
|
Отправлено: 21:33, 16-11-2014 | #4 |
Старожил Сообщения: 459
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 21:42, 16-11-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Foreigner, жив курилка! Какими судьбами?! «Я, конечно, вернусь, не пройдёт и полгода…» (с)
papacoca, пробуйте, мой вариант: Скрытый текст
@echo off setlocal enableextensions enabledelayedexpansion set sSourceFile=%~1 call :GetTemporaryName if defined sSourceFile ( if exist "%sSourceFile%" ( set /a iCount = 0 >"%TemporaryName%" ( for /f "usebackq delims=" %%i in ("%sSourceFile%") do ( set /a iCount += 1 set sLine=%%i echo ^(!iCount!, '!sLine:,=^|!'^), ) ) >nul copy /y "%sSourceFile%" "%~dpn1.bak" >nul copy /y "%TemporaryName%" "%sSourceFile%" del /f /q "%TemporaryName%" ) else ( echo Can't find source file [%sSourceFile%]. exit /b 2 ) ) else ( echo Usage: %~nx0 ^<Source file^> exit /b 1 ) endlocal exit /b 0 rem ========================================================================== rem Функция GetTemporaryName() rem rem Серый форум / CMD/BAT: генерация пути для временного файла или папки rem (http://forum.script-coding.com/viewtopic.php?id=6259) rem ========================================================================== :GetTemporaryName setlocal enableextensions enabledelayedexpansion :NextName set sTempName=%temp%\temp%random%.tmp if exist "%sTempName%" goto :NextName set sProcName=%~0 endlocal & set %sProcName:~4%=%sTempName% exit /b 0 rem ========================================================================== |
Отправлено: 21:49, 16-11-2014 | #6 |
Новый участник Сообщения: 22
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
Цитата:
![]() Вопрос, можно в файле в начале не с 1,2,3 нумеровать а с 668, 669, 700 и т.д. а так: "НАЧАЛО" (668, 'весьма|очень'), (669, 'ветвей|веток'), (700, 'ветви|ветки'), Просто мне нужно будет с разных .txt файлов лепит 1-ну базу. Всем Огромное спасибо +1 |
|||
Последний раз редактировалось papacoca, 16-11-2014 в 23:41. Отправлено: 23:05, 16-11-2014 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата papacoca:
А уж насчёт «и сам батник удалился» я и вовсе теряюсь в догадках. |
|
Отправлено: 23:46, 16-11-2014 | #8 |
Новый участник Сообщения: 22
|
Профиль | Отправить PM | Цитировать Цитата:
Вопрос, можно в файле в начале не с 1,2,3 нумеровать а с 668, 669, 700 и т.д. так: (668, 'весьма|очень'), (669, 'ветвей|веток'), (700, 'ветви|ветки'), |
|
Отправлено: 23:54, 16-11-2014 | #9 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать |
Отправлено: 03:15, 17-11-2014 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MySQL - Дописать в начало строки текст каждой записи в опредленном поле | Artem-Samsung | Программирование и базы данных | 7 | 02-10-2019 20:22 | |
CMD/BAT - [решено] For, чтение двух переменных с каждой строки | DesmondTruman | Скриптовые языки администрирования Windows | 4 | 21-12-2012 03:12 | |
PowerShell - [решено] цикл для каждой строки из файла | rudimko | Скриптовые языки администрирования Windows | 15 | 25-10-2012 09:46 | |
Разное - Добавление имени файла в начало каждой строки. | CkapHa | Программирование и базы данных | 2 | 02-01-2012 22:13 | |
.NET - [решено] Определить и записать смещение каждой строки | S.T.R.E.L.O.K. | Программирование и базы данных | 5 | 15-08-2011 09:55 |
|