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

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

Ответить
Настройки темы
CMD/BAT - [решено] Копирование\перенос строк с 1.txt до определённой строки\секции в 2.txt.

Аватара для crimes

Новый участник


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

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


Изменения
Автор: crimes
Дата: 10-06-2013
И так задача:

Необходимо с файла TXTSETUP1.txt вырезать все строки до секции [BootBusExtenders.Load] в TXTSETUP2.txt

В общем итоге мне нужно:

С файла TXTSETUP1.txt до секции [BootBusExtenders.Load] перенесло всё в TXTSETUP2.txt а в TXTSETUP1.txt все осталось начиная с секции [BootBusExtenders.Load] .

Ну как бы разбить их по определённой секции или строке\слову.



Нумерация не покатит та свыше 5000 строк и они меняются.

За ранние всем спасибо.

-------
Не говорите что мне делать, я не скажу куда вам идти!


Отправлено: 06:11, 10-06-2013

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@echo off
setlocal

set "file=TXTSETUP1.tmp"
for /f "tokens=1,2 delims=:" %%i in ('findstr /n "^"  TXTSETUP1.txt') do call:1 %%i "%%j"

for %%i in (*.tmp) do move /y %%i %%~ni.txt
goto:eof

:1

if %2=="[BootBusExtenders.Load]" set file=TXTSETUP2.tmp

1>>%file% (

    if %2=="" (echo.) else (echo %~2)

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

Отправлено: 07:50, 10-06-2013 | #2



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

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


Аватара для crimes

Новый участник


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

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


Спасибо за ответ,но что то не работает,файл от win xp TXTSETUP.SIF.

-------
Не говорите что мне делать, я не скажу куда вам идти!


Последний раз редактировалось crimes, 12-06-2013 в 02:46.


Отправлено: 09:27, 10-06-2013 | #3


Ветеран


Contributor


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

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


crimes,
Батники не совсем подходят для таких задач (работа с текстом). Варианты на PowerShell:
Код: Выделить весь код
$a = gc .\TXTSETUP.SIF
$file = ".\1.txt"

$a | % {

    if ($_ -eq "[BootBusExtenders.Load]") { $file = ".\2.txt" }
    add-content $file $_

}
Вариант побыстрей:
Код: Выделить весь код
$a = gc .\TXTSETUP.SIF

for ($i = 0; $i -le ($a.count-1); $i++ ) { 

    if ($a[$i] -eq "[BootBusExtenders.Load]") { $ind = $i; break }
    
}

set-content .\1.txt $a[0..($ind-1)]    
set-content .\2.txt $a[$ind..($a.count-1)]
С помощью sed:
Код: Выделить весь код
@echo off
setlocal

for /f %%i in ('sed -n "/\[BootBusExtenders\.Load\]/ =" TXTSETUP.SIF') do set "str=%%i"

sed -n "%str%,$ p" TXTSETUP.SIF > 2.txt
set /a str-=1
sed -n "1,%str% p" TXTSETUP.SIF > 1.txt

Последний раз редактировалось Foreigner, 10-06-2013 в 22:34.


Отправлено: 19:19, 10-06-2013 | #4


Ветеран


Contributor


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

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


BAT-файл.

Код: Выделить весь код
@ECHO OFF
FOR /F "tokens=1 delims=:" %%I IN ('FINDSTR /N /L [BootBusExtenders.Load]^<TXTSETUP1.SIF') DO (
 SET VAR1=%%I
)
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=1* delims=]" %%I IN ('FIND /N /V ""^<TXTSETUP1.SIF') DO (
    SET VAR2=%%I
    SET VAR3=!VAR2:~1!
    SET VAR4=%%J
    IF !VAR3! LSS %VAR1% (
     IF DEFINED VAR4 (
      SET /P VAR5="%%J" 0>nul 1>>TXTSETUP2.SIF
      ECHO.>>TXTSETUP2.SIF
   ) ELSE (
      ECHO.>>TXTSETUP2.SIF
 )) ELSE (
     IF DEFINED VAR4 (
      SET /P VAR5="%%J" 0>nul 1>>temp.txt
      ECHO.>>temp.txt
   ) ELSE (
      ECHO.>>temp.txt
)))
MOVE temp.txt TXTSETUP1.SIF
ECHO All's ready! Press any key to exit.
PAUSE>nul
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:55, 10-06-2013 | #5


Аватара для crimes

Новый участник


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

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


Всем спасибо, всё работает.

-------
Не говорите что мне делать, я не скажу куда вам идти!


Последний раз редактировалось crimes, 11-06-2013 в 02:13.


Отправлено: 02:00, 11-06-2013 | #6


Ветеран


Contributor


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

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


Цитата crimes:
Цитата:
всё работает.
И все корректно работает? И нигде не проглатывает восклицательные знаки?

Код: Выделить весь код
[DiskDriverMap]
abiosdsk = "%1 МБ диск Micro Channel"
atdisk   = "%1 МБ диск IDE/ESDI"
disk     = "%1 МБ диск %2 ID %3 шина %4 на %5"
Код: Выделить весь код
[DiskDriverMap]
abiosdsk = "%1!u! МБ диск Micro Channel"
atdisk   = "%1!u! МБ диск IDE/ESDI"
disk     = "%1!u! МБ диск %2!u! ID %3!u! шина %4!u! на %5"

Последний раз редактировалось Foreigner, 11-06-2013 в 07:05.

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

Отправлено: 06:53, 11-06-2013 | #7


Ветеран


Contributor


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

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


BAT-файл №2.

Код: Выделить весь код
@ECHO OFF
FOR /F "tokens=1 delims=:" %%I IN ('FINDSTR /N /L [BootBusExtenders.Load]^<TXTSETUP1.SIF') DO (
 SET /A VAR1=%%I
)
FOR /F "tokens=*" %%I IN ('FIND /N /V ""^<TXTSETUP1.SIF') DO (
 FOR /F "tokens=1* delims=[]" %%J IN ("%%I") DO (
   IF %%J LSS %VAR1% (
    IF NOT %%I==[%%J]%%K (
     SET /P VAR2="[%%K" 0>nul 1>>TXTSETUP2.SIF
      ECHO.>>TXTSETUP2.SIF
  ) ELSE (
     SET /P VAR2="%%K" 0>nul 1>>TXTSETUP2.SIF
     ECHO.>>TXTSETUP2.SIF
)) ELSE (
    IF NOT %%I==[%%J]%%K (
     SET /P VAR2="[%%K" 0>nul 1>>temp.txt
     ECHO.>>temp.txt
  ) ELSE (
     SET /P VAR2="%%K" 0>nul 1>>temp.txt
     ECHO.>>temp.txt
))))
MOVE temp.txt TXTSETUP1.SIF
ECHO All's ready! Press any key to exit.
PAUSE>nul
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:42, 11-06-2013 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Visual Basic Чтение строк из txt Startup Программирование и базы данных 2 23-09-2012 17:48
CMD/BAT - вытащить из 3-x txt файлов строки в 4-й txt и отправить его в шару на сервер campbell Скриптовые языки администрирования Windows 1 10-11-2011 09:59
CMD/BAT - [решено] Парсер строк TXT файла Flayer Скриптовые языки администрирования Windows 9 15-10-2011 09:44
CMD/BAT - [решено] Вставка строк в конкретные строки (txt) alexey_vf Скриптовые языки администрирования Windows 2 06-06-2011 14:58
CMD/BAT - [решено] Чтение определённой строки из txt hxygen Скриптовые языки администрирования Windows 10 16-11-2010 02:53




 
Переход