kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Deniz Zoeteman
Deniz Zoeteman
Вопрос

Пакетная обработка / поиск и редактирование строк в TXT-файле

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

Пример:

//TXT FILE//

ex1
ex2
ex3
ex4

Я хочу, чтобы пакетный файл нашел 'ex3' и изменил его на 'ex5', чтобы это выглядело так:

ex1
ex2
ex5
ex4
25 2009-07-12T07:53:53+00:00 3
Программирование
batch-file
text-files
find
edit
lines
Этот вопрос имеет 1 ответ на английском, чтобы прочитать их войдите в свой аккаунт.
Решение / Ответ
 ghostdog74
ghostdog74
12-го июля 2009 в 8:30
2009-07-12T08:30:23+00:00
Дополнительно
Источник
Редактировать
#9253555

На родной установке Windows вы можете использовать либо batch(cmd.exe), либо vbscript, не прибегая к помощи внешних инструментов. Вот пример в vbscript:

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\test\file.txt"
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    If InStr(strLine,"ex3")> 0 Then
        strLine = Replace(strLine,"ex3","ex5")
    End If 
    WScript.Echo strLine
Loop    

Сохраните как myreplace.vbs и в командной строке:

c:\test> cscript /nologo myreplace.vbs  > newfile
c:\test> ren newfile file.txt
Chris  van Chip
Chris van Chip
Редактировал ответ 2-го ноября 2018 в 3:01
30
0
 RobW
RobW
15-го июля 2009 в 2:49
2009-07-15T02:49:29+00:00
Дополнительно
Источник
Редактировать
#9253556

В XP или 2k3 нет функции поиска и замены или редактирования потока в командной строке (не знаю, как в vista или других). Поэтому вам придется использовать скрипт, подобный тому, что опубликовал Ghostdog, или инструмент с функцией поиска и замены, например sed.

Существует более одного способа сделать это, как показывает этот скрипт:

@echo off
    SETLOCAL=ENABLEDELAYEDEXPANSION

    rename text.file text.tmp
    for /f %%a in (text.tmp) do (
        set foo=%%a
        if !foo!==ex3 set foo=ex5
        echo !foo! >> text.file) 
del text.tmp
Chris  van Chip
Chris van Chip
Редактировал ответ 11-го ноября 2017 в 5:41
14
0
 nik
nik
12-го июля 2009 в 8:12
2009-07-12T08:12:54+00:00
Дополнительно
Источник
Редактировать
#9253554

Именно для таких вещей был создан sed (конечно, для этого вам нужен sed в вашей системе).

sed 's/ex3/ex5/g' input.txt > output.txt

Для этого вам понадобится либо Unix-система, либо платформа типа Windows Cygwin.
Существует также GnuWin32 для sed. (Установка и использование GnuWin32).

 nik
nik
Редактировал ответ 12-го июля 2009 в 8:18
5
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 6 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
DE
ES
ID
JA
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией