![]() |
Перенести в XML имя компьютера заменив часть текст.
Добрый вечер!
Покопался на форуме несколько часов, перепробовал найденные примеры, но не смог сделать сам, помогите новичку. Необходимо создать батник который в файле XML заменить в строке <Server>USER-PC/3050</Server> значение "USER-PC" на реальное имя компьютера. XML выглядит так: <?xml version="1.0" encoding="windows-1251"?> <Settings> <DB> <Type>Firebird</Type> <Server>USER-PC/3050</Server> <Database>C:\Taxcom\Docliner Single\DB\Docliner.fdb</Database> <IntegratedSecurity>False</IntegratedSecurity> <Login>Login</Login> <Password>Password</Password> <DatabaseMK>C:\Taxcom\Docliner Single\DB\Docliner_MK.fdb</DatabaseMK> <Filestream>C:\Taxcom\Docliner Single\DB\Filestream</Filestream> <CountConnection>5</CountConnection> </DB> </Settings> |
Пытаюсь подогнать имеющиеся примеры под себя, пока дошел до момента
@echo off setlocal enabledelayedexpansion Set 1=hostname Set _find="USER-PC" Set _replace=1 for %%J in (Settings.xml) do ( Дальше не знаю какая должна быть команда :( Если я хотя бы начало правильно делаю.. |
Set infile=Settings.xml
Set hostname=%COMPUTERNAME% Set find=USER-PC Set replace=hostname setlocal enabledelayedexpansion for /F "tokens=* delims=," %%n in (!infile!) do ( set LINE=%%n set LINE=!LINE:%find%=%replace%! @echo !LINE!>>Settings1.xml ) endlocal Мне осталось только вместо %COMPUTERNAME% получить команду которая мне даст реальное имя пк. Помогите! Все. Доперло до нуба. Set infile=Settings.xml Set find=USER-PC Set replace=%COMPUTERNAME% setlocal enabledelayedexpansion for /F "tokens=* delims=," %%n in (!infile!) do ( set LINE=%%n set LINE=!LINE:%find%=%replace%! @echo !LINE!>>Settings1.xml ) endlocal Всем спасибо, расходимся. :))) |
Блин. Теперь другая проблема. Думал будет легко, ан нет.
Я копирую этот батник в целевой каталог другим батником. Но вот как его теперь там запустить??? call "C:\dot\cat\Client\2.bat" не работает. start "C:\dot\cat\Client\2.bat" тоже не работает. Пробовал убирать кавычки - не помогает. Помогите... |
Код:
@echo off Цитата:
через start не забываем заголовок: start "" "C:\dot\cat\Client\2.bat" |
Ваш пример не меняет параметр. Мой меняет. Я потом дописал чтобы он удалял Settings.xml и переименовывал Settings1.xml
Set infile=Settings.xml Set find=USER-PC Set replace=%COMPUTERNAME% setlocal enabledelayedexpansion for /F "tokens=* delims=," %%n in (!infile!) do ( set LINE=%%n set LINE=!LINE:%find%=%replace%! @echo !LINE!>>Settings1.xml ) del Settings.xml ren Settings1.xml Settings.xml endlocal Но так и не понял как запустить батник из каталога... Цитата:
|
Цитата:
так понятнее: Код:
start "Заголовок" "C:\dot\cat\Client\2.bat" Код:
start /? Цитата:
в вашем коде моего примера в строке set "f=file.xml" имя файла совпадает с реальным? |
На WSH:
Скрытый текст
Код:
Option Explicit |
WSH это уже чутка другое, это мне еще пока рановато..
В общем там и не смог запустить даже когда заменил на Settings ничего не изменилось. Цитата:
Как мне сделать так, чтобы мой батник изменил параметр в другой папке. Если проще по задаче, чтобы меньше неясностей было. У меня есть куча однотипным компов, мне нужно в 2 местах заменить в файле Settings.xml USER-PC на реальное имя компа. Я хочу копировать куда-нибудь на рабочий стол папку с 2-мя батниками, одни скопирует другой в эти 2 места и запустит его там. Но судя по всему запускать можно и с рабочего стола, просто указав правильно путь до нужных Settings.xml Помогите :( |
iluha_nam,
если ваш файл Settings.xm выглядит как вы написали, то как видите все работает: Файл 142912 |
Если в строке <Server>USER-PC/3050</Server> больше ничего нет, то вот решение
Код:
@echo off alpap, у меня почему-то ваш батник отрабатывает неправильно
Вот исходный файл(Z:\Box_In\Ку ку.xml)
Код:
<?xml version="1.0" encoding="windows-1251"?> Код:
@echo off Код:
<?xml version="1.0" encoding="windows-1251"?> |
megaloman,
Исходный: C:\Box_In\Ку ку.xml (кодировка 866) Код:
<?xml version="1.0" encoding="windows-1251"?> Код:
@echo off Код:
<?xml version="1.0" encoding="windows-1251"?> Единственно, если у ТС что-то не так выглядит в исходном или оказывает влияние кодировка, то все может быть и не для cmd это дело по большому счету, если будет (что очень реально) кодировка utf-8 и кириллица для полного счастья - cmd точно отдыхает. |
Цитата:
Цитата:
Цитата:
|
Цитата:
megaloman, все, понял в чем причина. Скопировал именно Ваш вариант содержимого xml и увидел что после строки <?xml version="1.0" encoding="windows-1251"?> все последующие строки идут с пробелом в начале строки (случайность? или так положено оформлять xml?) это ломает выходную картину. |
Для такого варианта написания содержимого код будет таким:
Код:
@echo off |
Цитата:
|
alpap, Я не знаю, что бы хотел iluha_nam, но я понял задачу, что надо получить строку типа
<Server>TRALALA/3050</Server> |
megaloman, я тоже понял именно так. То есть — заменить часть содержимого узла Server.
|
Время: 07:15. |
Время: 07:15.
© OSzone.net 2001-