Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   работа со строками, а именно редактирование строк в текстовом файле (http://forum.oszone.net/showthread.php?t=289569)

Vlad_705 17-10-2014 13:02 2416655

работа со строками, а именно редактирование строк в текстовом файле
 
Привет всем!
Помогите мне, пожалуйста, в следующем вопросе.
Мне необходимо написать батник, и возникла проблема в следующем вопросе.
В батнике должна осуществляться работа со строками, а именно редактирование строк в текстовом файле. Для этого мне необходимо присвоить строки данного файла, но строки содержат символы "=" и ковычки. Из-за данных символов батник работает некорректно.
Подскажите пожалуйста как можно осуществить присвоение длинного имени с этими символами?

очень надеюсь на вашу помощь:)

Georgio 17-10-2014 13:14 2416664

Vlad_705, выложите на форум Ваш текстовый файл в архиве и опишите подробно, что Вы хотите с ним делать.

Vlad_705 17-10-2014 15:15 2416701

Вложений: 1
Georgio,
Вложил архив, в котором 2 файла: батник и документ Web.config (открываю через блокнот).
в документе много строчек, которые необходимо заменить, конструкцию написания батника вроде как я освоил.
но возникла проблема, как видно в файле строчки имеют очень сложный состав символов, с "=" и кавычками (""), из-за этого возникает проблема поиска строк в файле (из-за "=", переприсваивании переменной).

Я думаю есть какой-нибудь синтаксис для корректного написания такой длинной переменной (как то обособляя всю переменную например:
<add key="OikIporterGetDataFromXml" value="true" /> вот такая строка с различными символами и батнику необходимо ее найти и например удалить, в других случаях исправить какое-нибудь значение в этой строке, но батник ее не находит из-за символа "=" )

помогите, пожалуйста, исправить эту проблему, или как-нибудь обойти ее иначе

Iska 18-10-2014 05:18 2416912

Цитата:

Цитата Vlad_705
и документ Web.config »

Вот прямо так, с пронумерованными строчками «1.», «2.», «3.»? Впечатление, что это ошмётки какого-то xml в UTF-8 with BOM. Это не Web.config — Википедия?

Vlad_705 19-10-2014 20:30 2417611

Iska, нет это не web.config википедия.
Задача в следующем, приходит обновление ПО c config, который необходимо автоматизированно исправить. В config который скинул я, отражены некоторые моменты которые нужно исправить. Пронумерованные строчки сделал я, поскольку наглядно удалос проследить правилность написание кода. В идеале номерации строчек в далнейшем не будет, т.е на них основываться нелзя.
Чтобы осуществить данную задачу, как я понимаю, необходимо работать со сторой в целом, т.е необходимо присвоить целую строку одной переменной , но загвостка в том что в переменной символы "=" и ковычки, в связи с чем код не корректно работает.
помогите, пожалуйста, в решении данной проблемы. (присвоении целой строки одной переменной , или возможно решит задачу иначи)

т.е как я привел в примере, например:
set str5=add key="LocalEnterprise"

в данном присвоении некоректно заданна переменная.
может как то можно обособит ее с помощю синтаксиса, например
set str5=[add key="LocalEnterprise"]
ребята помогите, пожалуйста.

Vlad_705 19-10-2014 21:00 2417635

Подскажите, поалуйста, процедуру, которая позволяет пробегаться по всему тексту файла (конфига) и находить символ "=" и заменять его например на букву Z.

setlocal enabledelayedexpansion
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set LINE=!LINE: (поставив его сюда)

@echo !LINE!>>Web_new.config
)
endlocal

если получится я обязателно поделюсь и напишу что получилось.
Очен надеюсь на вашу помощь :)

Iska 19-10-2014 22:46 2417692

Цитата:

Цитата Vlad_705
Пронумерованные строчки сделал я, »

Не делайте так больше. Потому как просят именно оригинальную версию. Один лишний или, напротив, отсутствующий пробел может радикально повлиять на работоспособность скрипта, а выяснение этого постфактум ничего, кроме закономерного раздражения у пишущего не вызывает.

Georgio 20-10-2014 17:26 2417988

Код:

@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



Время: 10:04.

Время: 10:04.
© OSzone.net 2001-