Так что у меня возникли проблемы с корректной работой этого командного файла.Я пробовал несколько разных способов найти и заменить строку.
Проблема: нам приходится обновлять базу данных очень часто, и при этом файл изменяется.Я должен изменить один файл обратно, чтобы заставить вещи работать.Эта строка:
<network ipAdress="172.24.55.32" networkPort="9100" />
изменяется на эту строку:
<file filename="fffff" />
и должна быть заменена на первую строку с IP-адресом.
У меня естьпопытался использовать подпрограмму поиска и замены и может заставить ее работать в первой части, изменив «file filename» на «network ipAdress», но кавычки во втором разделе не позволяют скрипту работать правильно.Это код, который у меня есть.
@echo off
setlocal
call :FindReplace "file filename" "network ipAdress" BCPrint.XML
Timeout 2
call :FindReplace "fffff" "172.24.55.32" networkPort="9100" BCPrint.XML
exit /b
:FindReplace <findstr> <replstr> <file>
set tmp="%temp%\tmp.txt"
If not exist %temp%\_.vbs call :MakeReplace
for /f "tokens=*" %%a in ('dir "%3" /s /b /a-d /on') do (
for /f "usebackq" %%b in (`Findstr /mic:"%~1" "%%a"`) do (
echo(&Echo Replacing "%~1" with "%~2" in file %%~nxa
<%%a cscript //nologo %temp%\_.vbs "%~1" "%~2">%tmp%
if exist %tmp% move /Y %tmp% "%%~dpnxa">nul
)
)
del %temp%\_.vbs
exit /b
:MakeReplace
>%temp%\_.vbs echo with Wscript
>>%temp%\_.vbs echo set args=.arguments
>>%temp%\_.vbs echo .StdOut.Write _
>>%temp%\_.vbs echo Replace(.StdIn.ReadAll,args(0),args(1),1,-1,1)
>>%temp%\_.vbs echo end with
Я также попытался установить вторую переменную как переменную, например:
set R2=172.24.55.32" networkPort="9100
call :FindReplace "file filename" "network ipAdress" BCPrint.XML
Timeout 2
call :FindReplace "fffff" "%R2%" BCPrint.XML
Также с escape-символами:
set ^R2=172.24.55.32" networkPort="9100^
Я уверен, что я попробовал несколько разных способов, которые я не перечислил как escape-символы без использования переменной.Я пришел к концу того, что я могу понять.
Есть ли способ найти и заменить строку, содержащую специальные символы, строкой, имеющей специальные символы?Любой совет о том, как сделать всю строку или второй раздел с кавычками и пробелом, был бы полезен.Спасибо за ваше время.