Я пытаюсь найти строку "blabla" внутри файла. Если я найду строку, я заменю ее на «bloblo», если не сделаю ничего. И я хочу сделать эту операцию для всех файлов, которые у меня есть в папке.
Когда я применяю скрипт к одному файлу, он работает хорошо. Когда я использую цикл for, он не работает. он не входит в цикл for
Вот мой сценарий:
set "Var1=blabla"
set "Var2=bloblo"
FOR %%i IN (C:\Users\UserName\Desktop\TEST\*.txt) DO (
find /c "%Var1%" %%i
if %errorlevel% equ 1 goto notfound
call PathFile\FUNCTION_REPLACE.cmd %Var1% %Var2% %%i
:notfound
)
Я использую скрипт «Function_replace» для замены значений, вот скрипт:
SetLocal EnableExtensions DisableDelayedExpansion
Set "search=%~1"
Set "replace=%2"
Set "File=%3"
For /F "Tokens=1*Delims=]" %%A In ('Find /V /N ""^<"%File%"^&Break^>"%File%"'
)Do (Set "line=%%B"
SetLocal EnableDelayedExpansion
(If Not "%%B"=="" (Echo(!line:%search%=%replace%!)Else Echo()>>"%File%"
EndLocal)
Раньше я использовал прямой вызов моей функции замены для каждого файла в моей папке. Но это занимает много времени, чтобы войти в каждый файл. Вот почему я хочу проверить перед каждым входом в каждый файл, существует ли строка (с помощью find /c).
Вы можете определить, откуда возникла проблема?