Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Построчное чтение файла и запись в другой (http://forum.oszone.net/showthread.php?t=181512)

acefoster 27-07-2010 01:21 1461179

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

Пример:
1.Файл со списком содержит строки
Код:

Пете
Саше
Маше
Кате

2. Файл с шаблоном содержит чтото вида
Код:

Дядя Стёпа купил %строка_из_файла_со_списком% огромное вкусное мороженное.
%строка_из_файла_со_списком% очень понравилось мороженное.

3. В итоге должен создатся третий файл в котором была вынесена последовательно обработка разделенная одной пустой строкой с предыдущей
Код:

Дядя Стёпа купил Пете огромное вкусное мороженное.
Пете очень понравилось мороженное.

Дядя Стёпа купил Саше огромное вкусное мороженное.
Саше очень понравилось мороженное.

И что ещё конкретно интересует... каким должен быть сам шаблон, чтобы реализовать подобное?

Искренне надеюсь на вашу помощь :)

gora 27-07-2010 09:57 1461320

Файл names.txt:
Код:

Пете
Саше
Маше
Кате

Файл text.txt:
Код:

Дядя Стёпа купил %nm% огромное вкусное мороженное.
%nm% очень понравилось мороженное.

Батник:
Код:

@Echo Off
(For /F %%i In (names.txt) Do (
        Set nm=%%i
        For /F "tokens=*" %%k In (text.txt) Do For /F "tokens=*" %%j In ('Echo %%k') Do Echo %%j
        Echo.
))>out.txt

В файле out.txt нужный (получаемый) текст.

acefoster 27-07-2010 14:59 1461506

gora преогромнейшее Вам спасибо! очень выручили)

ruslanstep1 14-06-2011 11:49 1694135

У меня такой вопрос как решить вот такую проблему есть некий файл содержимое такое
IP:10.10.10.10,ADV
IP:22.22.22.22,ADV
IP:33.33.33.33,WMS
а вот это команда из батника
sqlplus -L user/user(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=%IP%)(PORT=1521)))(CONNECT_DATA=(SERVICE _NAME=%name%))
так вот как в подставлять ip из файла и %name% соответствующий этому ip в данном случае ADV и WMS

gora 14-06-2011 14:33 1694244

ruslanstep1
Код:

@Echo Off
:: Файл-список
Set file=e:\Temp\list 1.txt

For /F "usebackq tokens=2,3 delims=:," %%i In ("%file%") Do (
        Echo %%i        %%j
Rem        sqlplus -L user/user(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=%%i)(PORT=1521)))(CONNECT_DATA=(SERVICE _NAME=%%j))
)
Pause>Nul

Исполняемая строка закомментирована, в ней непарное число открывающих и закрывающих скобок, разберитесь с ней самостоятельно.

ruslanstep1 14-06-2011 15:00 1694257

а IP он не выбирает из файла

Цитата:

Цитата gora
Echo %%i %%j »

тут когда оставляеш %%i он мне показывает тока ADV И WMS из всего списка а мне еще нужно было чтоб и IP выдрались
Спасибо

ruslanstep1 14-06-2011 15:23 1694275

извените я просто не теми руками запускал руки кривые

ruslanstep1 14-06-2011 15:48 1694285

а можно этот логировать например если коннект был писать что все "ОК" а если не было коннекта то "NO" и записовать все это в файл log.txt

gora 14-06-2011 17:58 1694360

Цитата:

Цитата ruslanstep1
а можно этот логировать »

Я не знаю коды возврата этой утилиты, но можете попробовать так:
Код:

@Echo Off
SetLocal EnableDelayedExpansion
:: Файл-список
Set file=e:\Temp\list 1.txt

>Connect.log (For /F "usebackq tokens=2,3 delims=:," %%i In ("%file%") Do (
Rem        Echo %%i        %%j
Rem        sqlplus -L user/user(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=%%i)(PORT=1521)))(CONNECT_DATA=(SERVICE _NAME=%%j))
        If "!ErrorLevel!"=="0" (Echo Connection OK. %%i        %%j        %%ErrorLevel%%=!ErrorLevel!) Else Echo No Connection. %%i        %%j        %%ErrorLevel%%=!ErrorLevel!
))
Pause>Nul


ruslanstep1 15-06-2011 09:12 1694703

у меня токая проблема во время исполнения bat`ка пишет ошибку
(Host was unexpected at this time

Код:

@echo off
set NLS_LANG=.WE8PC850
set /p login=Your login:
set /p pass=Your password: 
Set file=C:\Users\IskhakovR\Desktop\names.txt
>Connect.log (For /F "usebackq tokens=2,3 delims=:," %%i In ("%file%") Do (
Echo %%i        %%j
exit sql.sqlcode | sqlplus -L %login%/%pass%@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = %%i)(PORT = 1521)))(CONNECT_DATA = SERVICE_NAME = %%j)))
        If "!ErrorLevel!"=="0" (Echo Connection OK. %%i        %%j        %%ErrorLevel%%=!ErrorLevel!) Else Echo No Connection. %%i        %%j        %%ErrorLevel%%=!ErrorLevel! ))
 Pause>Nul


i7allia 18-12-2012 16:50 2048117

Помогите пожалуйста. Создаю папку по имени IP машины. Терерь надо скопировать все txt файлы в нее. И передать ее по сети скажем \\10.3.1.120\poisk

md d:\temp\poisk\IP
ipconfig > d:\temp\poisk\IP\IP.txt
find /v "Основной шлюз" d:\temp\poisk\IP\IP.txt > d:\temp\poisk\IP\IPvrem.txt
findstr /R "10."* d:\temp\poisk\IP\IPvrem.txt > d:\temp\poisk\ip.txt
DEL | ERASE /Q d:\temp\poisk\IP\*.*
RD /Q d:\temp\poisk\IP

@Echo off
SetLocal EnableDelayedExpansion
CHCP 1251> nul
(For /F "usebackq delims=" %%L In ("d:\temp\poisk\IP.txt") Do CHCP 866 Do Set nm=%%L > nul& md %%L
for %%i in (*.txt,*.txt) do copy "%%i" %%L"\*.*")

BatHard 28-03-2024 08:02 3025967

кстаа как именно прочитать файл не записать а инменно прочиитать и вывесть на экран в консоль через бат


Время: 05:12.

Время: 05:12.
© OSzone.net 2001-