Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 30.10.2019
Сообщений: 1

Замена подстроки между символами

30.10.2019, 17:15. Показов 1999. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Подскажите, как можно сделать замену подстроки параметром?

есть файл, в котором содержится следующая строка:
Code
1
Source ="source1" type="type1" date="2019-10-17"
необходимо делать замену даты

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
setlocal enabledelayedexpansion
Set infile=test.xml
Set find=date
Set replace=%1
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=, eol=#" %%n in (!infile!) do (
set LIN=%%n
set TMPR=!LIN:%find%=%replace%!
Echo !TMPR!>>TMP.TXT
)
move TMP.TXT %infile%
У меня получается только найти слово "date" и заменить его.
В идеале хотелось бы понять, как сделать замену текста между символами " и " после слова "date"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.10.2019, 17:15
Ответы с готовыми решениями:

Замена подстроки в строке
Приветствую! Имеется код, который работает set str1=У змеи кожа как у кожа крокодила echo.%str1% set str1=%str1:кожа =нечто %...

Найти цифры между 2-мя символами
Здравствуйте,есть txt требуется узнать если ли цифры между "=" и "M" =12314M пример в ссылке, если в txt между "=" и...

Как сохранить данные между символами?
Здравствуйте есть такой формат данных Пример: 888=999=1000 мне нужно сохранить то что между "=" т.е. 999 строк в файле...

2
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
30.10.2019, 23:38
Цитата Сообщение от razer_lek Посмотреть сообщение
Подскажите, как можно сделать замену подстроки
смысла в этом мало, именно на cmd, для другого случая все будет не просто не похоже, а кардинально по-другому и вы опять будете просить помочь или сделать за вас как сейчас. Например для приведенного вами текста, немного добавим:
file.txt
Кликните здесь для просмотра всего текста

Code
1
2
3
"slovo" slovo
Source="source1" type="type1" date="2019-10-17"
"slovo" "slovo" slovo

код будет таким:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
set "f=file.txt"
set "x=date"
set "newdate=2019-10-18"
 
<"%f%">$ (for /f "delims=" %%a in ('more') do @(
  <nul set /p="%%a"|>nul find "%x%"&& (
   for /f "tokens=1-3" %%i in ("%%a") do @for /f "tokens=1* delims==" %%A in ("%%k") do @echo %%i %%j %%A="%newdate%"
  ) || (
   echo %%a
  )
 )
)& >nul move $ "%f%"
pause
Не думаю что самостоятельно разберетесь в его работе, а чуть иначе изменить информацию с строке и код поменяется до неузнаваемости.
А все потому что cmd совершенно не предназначен для работы с текстом в плане замены, регулярок, вставок и т.п., для этого есть специальные средства которые делают это в первую очередь, понятно и логично и повторяемо, а к тому же быстро и гораздо точнее и надежнее.
0
 Аватар для volodin661
6684 / 2276 / 347
Регистрация: 10.12.2013
Сообщений: 7,857
31.10.2019, 06:30
Как составить такое регулярное выражение ?

Исходная строка: Source ="source1" type="type1" date="2019-10-17"

Source ="source1" type="type1" date="_2019-10-17"
спозиционироваться надо вот сюдa . . . . . ☝︎
то есть, зафиксировать такую позицию в строке, где слева от виртуального курсора находятся символы date="

рег.выражение для фиксации такой позиции выглядит так: (?<=date=")
далее надо захватить интересующие нас символы, которые можно описать так: это любой символ кроме двойной кавычки.
причем таких символов может быть несколько ( 0 и более символов )
регулярное выражение соответствующее этому описанию выглядит так: [^"]*

соединяем всё вместе: (?<=date=")[^"]*

Переходим к практической реализации.
Никакой поддержки механизма регулярных выражений в батниках нет, не было и никогда уже не будет. Никогда. Н И К О Г Д А
Поэтому powershell:

PowerShell
1
2
3
$строка = 'Source ="source1" type="type1" date="2019-10-17"'
 
$строка -replace '(?<=date=")[^"]*', 'С Новым годом!'
output:
Code
1
Source ="source1" type="type1" date="С Новым годом!"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2019, 06:30
Помогаю со студенческими работами здесь

Получение подстроки между символами #
Добро Пожаловать! Вобщем вопрос в том что я хочу сделать Если приходит сообщение и оно имеет ## тогда то что в ## например добавилось в...

Поиск подстроки между заданными символами
Написал код на C++, он ищет символы между символами введёнными в Edit и &quot;.txt&quot; . Всё вроде бы работает,но он ищет символы всего лишь один...

Поиск подстроки между определенными символами
Здравствуйте! Помогите плиз,как это можно реализовать. Допустим у нас есть строка: Мы с мамой пошли в парк им. Горького, а потом...

Замена подстроки в строке с неизвестными символами в строке
Пример: есть строка: s=&quot;Делаешь, уешь, гниешь, ешь&quot; Нужно заменить окончание ешь на ю то-есть: Делаю, ую, гнию. но просто...

Поиск и замена слова между пробелами и символами
Здрасьте! Как мне найти в тексте вхождение подстроки и заменить не часть этого вхождения, а целиком слово между пробелами, исключая все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru