Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перенести в XML имя компьютера заменив часть текст.

Ответить
Настройки темы
CMD/BAT - [решено] Перенести в XML имя компьютера заменив часть текст.

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый вечер!
Покопался на форуме несколько часов, перепробовал найденные примеры, но не смог сделать сам, помогите новичку.
Необходимо создать батник который в файле 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
Благодарности: 0

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Блин. Теперь другая проблема. Думал будет легко, ан нет.
Я копирую этот батник в целевой каталог другим батником. Но вот как его теперь там запустить???

call "C:\dot\cat\Client\2.bat"

не работает.

start "C:\dot\cat\Client\2.bat"

тоже не работает. Пробовал убирать кавычки - не помогает. Помогите...

Отправлено: 02:05, 19-01-2017 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить 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:
как его теперь там запустить »
достаточно: "Путь\name.bat"
через start не забываем заголовок: start "" "C:\dot\cat\Client\2.bat"

Отправлено: 03:35, 19-01-2017 | #5


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить 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:
через start не забываем заголовок »
Про заголовок не понял Можно примером?

Отправлено: 19:44, 19-01-2017 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата iluha_nam:
Можно примером? »
я привел выше
так понятнее:
Код: Выделить весь код
start "Заголовок" "C:\dot\cat\Client\2.bat"
если нет просто "" ставить надо, таков синтаксис
Код: Выделить весь код
start /?
Цитата iluha_nam:
Ваш пример не меняет параметр »
как вы это видите
в вашем коде моего примера в строке
set "f=file.xml"
имя файла совпадает с реальным?

Отправлено: 21:51, 19-01-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


WSH это уже чутка другое, это мне еще пока рановато..
В общем там и не смог запустить даже когда заменил на Settings ничего не изменилось.
Цитата alpap:
set "f=file.xml" »
Сейчас получается все кроме одного. Запускаю я свой батник из нужного каталога, рассчитывая, что если он находится в каталоге с нужным файлом Settings.xml, то и он в нем и отработает. По факту же то место от куда я запускаю батник для старта там и меняются настройки файла Settings.xml.
Как мне сделать так, чтобы мой батник изменил параметр в другой папке.

Если проще по задаче, чтобы меньше неясностей было. У меня есть куча однотипным компов, мне нужно в 2 местах заменить в файле Settings.xml USER-PC на реальное имя компа.
Я хочу копировать куда-нибудь на рабочий стол папку с 2-мя батниками, одни скопирует другой в эти 2 места и запустит его там. Но судя по всему запускать можно и с рабочего стола, просто указав правильно путь до нужных Settings.xml

Помогите

Отправлено: 21:07, 23-01-2017 | #9


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


iluha_nam,
если ваш файл Settings.xm выглядит как вы написали, то как видите все работает:
Файл 142912

Последний раз редактировалось alpap, 07-12-2017 в 15:07.


Отправлено: 03:24, 24-01-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перенести в XML имя компьютера заменив часть текст.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход