Вы можете сделать это следующим образом (используя пакетный файл, эквивалентный вашему sed):
Назовите файл replace_string.bat
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=,"
set "replace=."
set "textFile=clearances.txt"
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
Сначала мы хотим убедиться в задержкерасширение отключено (чтобы магия for
работала).Затем установите переменные для поиска и в файле.
Затем в цикле я использую type
для отображения содержимого файла.Затем ^
используется для экранирования & (run first command and then second)
и >
(перенаправление).
Затем сохраните переменную цикла %%i
(двойное значение %%
существует из-за того, что мы находимся в пакетеfile) в переменную line
, чтобы мы могли ее использовать.Тогда нам нужно enable delayedexpansion
, чтобы мы могли использовать !...!
.
Хитрая часть - echo(!line:%search%=%replace%!
.
echo(
обычно печатает пустую строку.Здесь вам нужно иметь его для line
расширения переменной.Без него вы бы получили что-то вроде:
'line:' не распознается как внутренняя или внешняя команда
Так что мы там, где мы есть (благодаря расширению)12,7:,=.
, что приводит к окончательному результату 12.7