|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перенести в XML имя компьютера заменив часть текст. |
|
|
CMD/BAT - [решено] Перенести в XML имя компьютера заменив часть текст.
|
Новый участник Сообщения: 6 |
Добрый вечер!
Покопался на форуме несколько часов, перепробовал найденные примеры, но не смог сделать сам, помогите новичку. Необходимо создать батник который в файле 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> |
|
Отправлено: 23:59, 18-01-2017 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Пытаюсь подогнать имеющиеся примеры под себя, пока дошел до момента
@echo off setlocal enabledelayedexpansion Set 1=hostname Set _find="USER-PC" Set _replace=1 for %%J in (Settings.xml) do ( Дальше не знаю какая должна быть команда ![]() |
Отправлено: 00:05, 19-01-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать 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 Всем спасибо, расходимся. ![]() |
Отправлено: 00:29, 19-01-2017 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Блин. Теперь другая проблема. Думал будет легко, ан нет.
Я копирую этот батник в целевой каталог другим батником. Но вот как его теперь там запустить??? call "C:\dot\cat\Client\2.bat" не работает. start "C:\dot\cat\Client\2.bat" тоже не работает. Пробовал убирать кавычки - не помогает. Помогите... |
Отправлено: 02:05, 19-01-2017 | #4 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать @echo off set "f=file.xml" set "tg=<Server>" set "sz=%Computername%" <"%f%">$ (for /f "delims=" %%a in ('more') do @( echo "%%~a"|>nul find "%tg%" && ( for /f "tokens=1,3 delims=><" %%b in ("%%~a") do @echo:^<%%b^>%sz%^<%%c^> ) || ( echo %%a ) ) )& >nul move $ "%f%" exit Цитата iluha_nam:
через start не забываем заголовок: start "" "C:\dot\cat\Client\2.bat" |
||
Отправлено: 03:35, 19-01-2017 | #5 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Ваш пример не меняет параметр. Мой меняет. Я потом дописал чтобы он удалял 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 Но так и не понял как запустить батник из каталога... Цитата alpap:
![]() |
|
Отправлено: 19:44, 19-01-2017 | #6 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:51, 19-01-2017 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать На WSH:
Скрытый текст
Option Explicit Dim strSourceFile If WScript.Arguments.Count = 1 Then strSourceFile = WScript.Arguments.Item(0) If WScript.CreateObject("Scripting.FileSystemObject").FileExists(strSourceFile) Then With WScript.CreateObject("Microsoft.XMLDOM") .load(strSourceFile) With .selectSingleNode("/Settings/DB/Server") .text = Replace(.text, "USER-PC", WScript.CreateObject("WScript.Network").ComputerName) End With .Save strSourceFile End With Else WScript.Echo "Can't find source file [" & strSourceFile & "]." WScript.Quit 2 End If Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>" WScript.Quit 1 End If WScript.Quit 0 |
Отправлено: 22:51, 19-01-2017 | #8 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать WSH это уже чутка другое, это мне еще пока рановато..
В общем там и не смог запустить даже когда заменил на Settings ничего не изменилось. Цитата alpap:
Как мне сделать так, чтобы мой батник изменил параметр в другой папке. Если проще по задаче, чтобы меньше неясностей было. У меня есть куча однотипным компов, мне нужно в 2 местах заменить в файле Settings.xml USER-PC на реальное имя компа. Я хочу копировать куда-нибудь на рабочий стол папку с 2-мя батниками, одни скопирует другой в эти 2 места и запустит его там. Но судя по всему запускать можно и с рабочего стола, просто указав правильно путь до нужных Settings.xml Помогите ![]() |
|
Отправлено: 21:07, 23-01-2017 | #9 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать iluha_nam,
если ваш файл Settings.xm выглядит как вы написали, то как видите все работает: Файл 142912 |
Последний раз редактировалось alpap, 07-12-2017 в 15:07. Отправлено: 03:24, 24-01-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
V. 2010 - Как перенести часть базы exchange на другой сервер | Epic555 | Microsoft Exchange Server | 1 | 11-04-2014 10:55 | |
Apple планирует перенести часть производства Mac в США | OSZone News | Новости информационных технологий | 0 | 06-12-2012 22:30 | |
Можно ли перенести программу с одного компьютера на другой? | Arassir | Хочу все знать | 6 | 08-07-2011 17:42 | |
HDD - HELP! Можно ли перенести часть свободного места диска "C" в неразмеченную область? | ox1dex | Накопители (SSD, HDD, USB Flash) | 8 | 23-07-2008 20:53 | |
xml и русский текст | L71 | Вебмастеру | 13 | 08-11-2005 10:22 |
|