Показать полную графическую версию : работа со строками, а именно редактирование строк в текстовом файле
Vlad_705
17-10-2014, 13:02
Привет всем!
Помогите мне, пожалуйста, в следующем вопросе.
Мне необходимо написать батник, и возникла проблема в следующем вопросе.
В батнике должна осуществляться работа со строками, а именно редактирование строк в текстовом файле. Для этого мне необходимо присвоить строки данного файла, но строки содержат символы "=" и ковычки. Из-за данных символов батник работает некорректно.
Подскажите пожалуйста как можно осуществить присвоение длинного имени с этими символами?
очень надеюсь на вашу помощь:)
Vlad_705, выложите на форум Ваш текстовый файл в архиве и опишите подробно, что Вы хотите с ним делать.
Vlad_705
17-10-2014, 15:15
Georgio,
Вложил архив, в котором 2 файла: батник и документ Web.config (открываю через блокнот).
в документе много строчек, которые необходимо заменить, конструкцию написания батника вроде как я освоил.
но возникла проблема, как видно в файле строчки имеют очень сложный состав символов, с "=" и кавычками (""), из-за этого возникает проблема поиска строк в файле (из-за "=", переприсваивании переменной).
Я думаю есть какой-нибудь синтаксис для корректного написания такой длинной переменной (как то обособляя всю переменную например:
<add key="OikIporterGetDataFromXml" value="true" /> вот такая строка с различными символами и батнику необходимо ее найти и например удалить, в других случаях исправить какое-нибудь значение в этой строке, но батник ее не находит из-за символа "=" )
помогите, пожалуйста, исправить эту проблему, или как-нибудь обойти ее иначе
и документ Web.config »
Вот прямо так, с пронумерованными строчками «1.», «2.», «3.»? Впечатление, что это ошмётки какого-то xml в UTF-8 with BOM. Это не Web.config — Википедия (https://ru.wikipedia.org/wiki/Web.config)?
Vlad_705
19-10-2014, 20:30
Iska, нет это не web.config википедия.
Задача в следующем, приходит обновление ПО c config, который необходимо автоматизированно исправить. В config который скинул я, отражены некоторые моменты которые нужно исправить. Пронумерованные строчки сделал я, поскольку наглядно удалос проследить правилность написание кода. В идеале номерации строчек в далнейшем не будет, т.е на них основываться нелзя.
Чтобы осуществить данную задачу, как я понимаю, необходимо работать со сторой в целом, т.е необходимо присвоить целую строку одной переменной , но загвостка в том что в переменной символы "=" и ковычки, в связи с чем код не корректно работает.
помогите, пожалуйста, в решении данной проблемы. (присвоении целой строки одной переменной , или возможно решит задачу иначи)
т.е как я привел в примере, например:
set str5=add key="LocalEnterprise"
в данном присвоении некоректно заданна переменная.
может как то можно обособит ее с помощю синтаксиса, например
set str5=[add key="LocalEnterprise"]
ребята помогите, пожалуйста.
Vlad_705
19-10-2014, 21:00
Подскажите, поалуйста, процедуру, которая позволяет пробегаться по всему тексту файла (конфига) и находить символ "=" и заменять его например на букву Z.
setlocal enabledelayedexpansion
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set LINE=!LINE: (поставив его сюда)
@echo !LINE!>>Web_new.config
)
endlocal
если получится я обязателно поделюсь и напишу что получилось.
Очен надеюсь на вашу помощь :)
Пронумерованные строчки сделал я, »
Не делайте так больше. Потому как просят именно оригинальную версию. Один лишний или, напротив, отсутствующий пробел может радикально повлиять на работоспособность скрипта, а выяснение этого постфактум ничего, кроме закономерного раздражения у пишущего не вызывает.
@echo off
set "in=Web.config"
set "out=Web_new.config"
echo Install PAK "Redy"
@>"%out%" (
for /f "usebackq delims=" %%i in ("%in%") do @(
for /f "tokens=1-6 delims== " %%j in ("%%i") do @(
(
for %%p in (
"CompanyProperty company"
"UseDemoEss 0"
"SaveEssData false"
"CrmXmlSourceFilesUsing false"
"OikIporterGetDataFromXml false"
) do @(
for /f "tokens=1,2" %%q in (%%p) do @(
if "%%l"==""%%q"" (
echo %%j %%k=%%l %%m="%%r" %%o
)
)
)
)& (
if "%%j"=="<windousAuthentication" (
echo %%j %%k="true" %%m
)
)& (
if "%%k"=="name" (
for /f "delims=" %%s in ("< />") do @(
echo %%s
)
)
)& (
if "%%j"==""Domains"" (
echo %%j= "cdu,oducn,oducz,odusb,odusv,oduur,oduvs,oduyu"
)
)& (
if "%%j"=="description" (
echo company
)
)
)
)| findstr "^"|| (
echo %%i
)
)
echo COMPLETED
exit /b
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.