![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставка строк в текстовый файл с определенной позиции. |
|
CMD/BAT - [решено] Вставка строк в текстовый файл с определенной позиции.
|
Новый участник Сообщения: 15 |
Здравствуйте.
Помогите написать cmd или vbs скрипт. Необходимо организовать вставку в текстовые файлы (DXF) 4-х строк, начиная с 6-й строки. Вставляемые строки: $ACADVER 1 AC1009 9 Спасибо. Приложен пример файла для обработки |
|
Отправлено: 15:57, 01-02-2013 |
Старожил Сообщения: 263
|
Профиль | Отправить PM | Цитировать @echo off echo working set n=0 set file=test.dxf set temp=test.txt for /f "delims=*" %%i in (' more +%n% %file% ') do call :1 "%%i" :next echo $ACADVER >>%temp% echo 1 >>%temp% echo AC1009 >>%temp% echo 9 >>%temp% for /f "delims=*" %%s in (' more +5 %file% ') do echo %%s >>%temp% del %file% && ren %temp% %file% exit :1 set /a n+=1 set s=%1 echo %s:~1,-1% >>%temp% if %n% == 5 goto :next |
Отправлено: 17:36, 01-02-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать zion87,
Вроде работает, но ужасно долго идет обработка... ![]() Быстрее руками в текстовом редакторе получается |
Отправлено: 17:25, 02-02-2013 | #3 |
Старожил Сообщения: 263
|
Профиль | Отправить PM | Цитировать Пожалуйста
там 4300 строк |
Последний раз редактировалось zion87, 02-02-2013 в 19:02. Отправлено: 17:33, 02-02-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 19:43, 02-02-2013 | #5 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата:
Ins = Array("$ACADVER", "1", "AC1009", "9") ' Какие строки вставляем nIns = 6 ' После какой строки NFile = "E:\Test\test.dxf" ' В каком файле ToFile = "E:\Test\test2.dxf" ' В какой файл. Имена могут совпадать AllIns = "" For i = 0 To UBound(Ins) AllIns = AllIns + Ins(i) + vbCrLf Next Set FSO = CreateObject("Scripting.FileSystemObject") Set F = FSO.OpenTextFile(NFile, 1, False) AllTxt = F.ReadAll F.Close Beg = 0 For i = 1 To 6 Beg = InStr(Beg + 1, AllTxt, vbCrLf) Next Set F = FSO.OpenTextFile(ToFile, 2, True) F.Write (Mid(AllTxt, 1, Beg + 1) + AllIns + Mid(AllTxt, Beg + 2)) F.Close |
|
------- Отправлено: 20:41, 02-02-2013 | #6 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Вроде бы недолго, руками точно дольше
@Echo Off Set NFile=E:\Test\test.dxf SetLocal EnableExtensions SetLocal EnableDelayedExpansion Del "%NFile%.~TMP" >nul 2>nul Set N=0 FOR /F "usebackq delims=" %%s IN ("%NFile%") DO ( @Echo %%s>>"%NFile%.~TMP" Set /A N=!N!+1 If !N! EQU 6 ( >>"%NFile%.~TMP" Echo $ACADVER >>"%NFile%.~TMP" Echo 1 >>"%NFile%.~TMP" Echo AC1009 >>"%NFile%.~TMP" Echo 9 ) ) rem Move /Y "%NFile%.~TMP" "%NFile%" Меня напрягает, что в конце вставляемых строк получается лишний пробел, хотя, возможно, для данного случая это не существенно я исправил решение в соответствии с предложенным исправлением от Iska - спасибо большое. |
------- Последний раз редактировалось megaloman, 02-02-2013 в 22:49. Отправлено: 21:35, 02-02-2013 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
>>"%NFile%.~TMP" Echo $ACADVER" >>"%NFile%.~TMP" Echo 1 >>"%NFile%.~TMP" Echo AC1009 >>"%NFile%.~TMP" Echo 9 @echo off setlocal enableextensions enabledelayedexpansion set sFile=test.dxf call :GetTemporaryName set /a iCount = 1 >"%TemporaryName%" ( for /f "usebackq delims=" %%s in ("%sFile%") do ( if !iCount! equ 6 ( echo $ACADVER echo 1 echo AC1009 echo 9 ) echo %%s set /a iCount += 1 ) ) if exist "%sFile%.bak" del "%sFile%.bak" ren "%sFile%" "%sFile%.bak" copy "%TemporaryName%" "%sFile%" del "%TemporaryName%" endlocal exit /b 0 rem ========================================================================== 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 ========================================================================== |
|
Отправлено: 22:37, 02-02-2013 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Вставка диапазона дат в текстовый файл | irk72ag | AutoIt | 7 | 25-06-2012 23:55 | |
CMD/BAT - [решено] Вставка новых строк и имени в начало файла | Евгений_ | Скриптовые языки администрирования Windows | 3 | 11-09-2011 14:39 | |
CMD/BAT - [решено] Вставка строк в конкретные строки (txt) | alexey_vf | Скриптовые языки администрирования Windows | 2 | 06-06-2011 14:58 | |
VBS/WSH/JS - [решено] Удаление/вставка строк в Word | AlexVong | Скриптовые языки администрирования Windows | 3 | 03-05-2011 17:20 | |
.NET - Долгая вставка строк в таблицу базы SDF | Delirium | Программирование и базы данных | 1 | 16-09-2009 06:33 |
|