Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
set "source=C:\qwerty.config"
set "dest=C:\qwerty_temp.config"
@echo off
chcp 1251 > nul
setlocal enabledelayedexpansion
set /p SearchWord=Введите слово для поиска:
set /p ReplaceWord=Введите слово для замены:
set "source=C:\qwerty.config"
set "dest=C:\qwerty_temp.config"
if not exist "%source%" (
echo Файл %source% не найден.
exit /b
)
:: Переменная для подсчета замен
set "count=0"
:: Чтение из файла, замена и запись в новый файл
for /f "tokens=*" %%a in ('type "%source%"') do (
set "line=%%a"
set "newline=!line:%SearchWord%=%ReplaceWord%!"
if not "!line!"=="!newline!" (
set /a count+=1
)
echo(!newline!>>"%dest%"
)
:: Перемещаем новый файл на место оригинала
move /y "%dest%" "%source%"
echo Замена завершена. Всего замен: !count!.
endlocal
подскажите, пожалуйста, не совсем понял, какой именно файл нужно указать в пути до временного файла?Еще как вариант в начале кода добавить строку
Для резервного копирование файла на всякий случай
Код::: Создаем резервную копию оригинального файла copy /y "%source%" "%source%.bak"
Любой путь он временныйподскажите, пожалуйста, не совсем понял, какой именно файл нужно указать в пути до временного файла?
@AssistGPT, поможете решить, чтобы отступы в файле сохранялись?подскажите, пожалуйста, не совсем понял, какой именно файл нужно указать в пути до временного файла?
в команде set "dest=C:\qwerty_temp.config" оставил всё как есть и работет, то есть вот так:
set "source=%USERPROFILE%\Desktop\qwerty.config"
set "dest=C:\qwerty_temp.config"
И второй вопрос, можна чтобы в новом файле отступы сохранялись как в оригинальном файле?
На фото: слева оригинал, справа после скрипта
Для того чтобы сохранить отступы в файле при замене слов, вам нужно немного изменить скрипт. Вместо использования@
@AssistGPT, поможете решить, чтобы отступы в файле сохранялись?подскажите, пожалуйста, не совсем понял, какой именно файл нужно указать в пути до временного файла?
в команде set "dest=C:\qwerty_temp.config" оставил всё как есть и работет, то есть вот так:
set "source=%USERPROFILE%\Desktop\qwerty.config"
set "dest=C:\qwerty_temp.config"
И второй вопрос, можна чтобы в новом файле отступы сохранялись как в оригинальном файле?
На фото: слева оригинал, справа после скрипта
echo(!newline!>>"%dest%"
, вы можете использовать echo(!newline!
. Это позволит сохранить отступы в новом файле. :: Чтение из файла, замена и запись в новый файл
(for /f "tokens=*" %%a in ('type "%source%"') do (
set "line=%%a"
set "newline=!line:%SearchWord%=%ReplaceWord%!"
if not "!line!"=="!newline!" (
set /a count+=1
)
echo(!newline!
)) > "%dest%"
не работает, есть две проблемы: первая - отступы не сохраняються как в оригинале, вторая - в новом файле в некоторых строчках добавляеться не нужноеДля того чтобы сохранить отступы в файле при замене слов, вам нужно немного изменить скрипт. Вместо использованияecho(!newline!>>"%dest%"
, вы можете использоватьecho(!newline!
. Это позволит сохранить отступы в новом файле.
Вот как будет выглядеть измененная часть скрипта:
CMD/BATCH::: Чтение из файла, замена и запись в новый файл (for /f "tokens=*" %%a in ('type "%source%"') do ( set "line=%%a" set "newline=!line:%SearchWord%=%ReplaceWord%!" if not "!line!"=="!newline!" ( set /a count+=1 ) echo(!newline! )) > "%dest%"
Этот код сохранит отступы в новом файле. Попробуйте использовать этот измененный скрипт и проверьте результат.
Для того чтобы сохранить отступы и избежать лишних замен в вашем скрипте, вам нужно внести следующие изменения:не работает, есть две проблемы: первая - отступы не сохраняються как в оригинале, вторая - в новом файле в некоторых строчках добавляеться не нужное
вот скрипт:
@echo off
chcp 1251 > nul
setlocal enabledelayedexpansion
set /p SearchWord=Enter a search word:
set /p ReplaceWord=Enter a replacement word:
set "source=%USERPROFILE%\Desktop\qwerty.config"
set "dest=%USERPROFILE%\Desktop\qwerty_temp.config"
if not exist "%source%" (
echo Файл %source% не найден.
exit /b
)
:: Переменная для подсчета замен
set "count=0"
:: Чтение из файла, замена и запись в новый файл
(for /f "tokens=*" %%a in ('type "%source%"') do (
set "line=%%a"
set "newline=!line:%SearchWord%=%ReplaceWord%!"
if not "!line!"=="!newline!" (
set /a count+=1
)
echo(!newline!
)) > "%dest%"
:: Перемещаем новый файл на место оригинала
move /y "%dest%" "%source%"
echo Замена завершена. Всего замен: !count!.
endlocal
вот пример файла оригинала:
<!--
-->
<name="qwerty.iname" value="venera" />
-->
<name="D.G.path" value="c:\" />
<!--
вот файл с результата:
<--
-->
<name="qwerty.iname" value="saturn" />
venera=saturn
venera=saturn
venera=saturn
-->
<name="D.G.path" value="c:\" />
venera=saturn
<--
venera=saturn
echo
без скобок и с отключенным автоматическим добавлением символа новой строки в конце строки. Это позволит сохранить отступы в новом файле.:: Чтение из файла, замена и запись в новый файл
(for /f "tokens=*" %%a in ('type "%source%"') do (
set "line=%%a"
set "newline=!line:%SearchWord%=%ReplaceWord%!"
if not "!line!"=="!newline!" (
set /a count+=1
)
echo|set /p=!newline!
)) > "%dest%"
:: Чтение из файла, замена и запись в новый файл
(for /f "tokens=*" %%a in ('type "%source%"') do (
set "line=%%a"
set "newline=!line:%SearchWord%=%ReplaceWord%!"
if not "!line!"=="!newline!" (
for /f "delims=" %%b in ('echo !line! ^| findstr /i /c:"\b%SearchWord%\b"') do (
set /a count+=1
echo|set /p=!newline!
)
) else (
echo|set /p=!line!
)
)) > "%dest%"
там все настройки задаются элементарно. Его можно запустить в т.ч. из-под батника в автоматическом режиме.И изначально ТЗ было через батник, но вдруг тоже пригодится ReplaceByRegular
А мне как то бот предложил батником прочитать файл в переменную, в ней заменить "венерьі на сатурньі", а затем записать полученную переменную в новьій файл.@Denis2707, не мучайте дальше бота. Его пример не будет работать ни в каком виде для указанного вами содержимого.
Воспользуйтесь
там все настройки задаются элементарно. Его можно запустить в т.ч. из-под батника в автоматическом режиме.