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

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

Ответить
Настройки темы
CMD/BAT - Копирование строки с условием

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


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

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


Приветствую!
Возможно создать скрипт, при запуске которого сканировалась каждая строка файла xml или txt и если в строке есть определенная часть (например <text> или <desc>), то скопировать данную строку целиком в отдельный фаил. Если в строке данной части нет, то сделать отступ. Желательно запускать .BAT или подсказать, как можно запускать решение. Возможно такое? Фаил и пример https://ibb.co/mXTQhrB

Отправлено: 10:15, 14-10-2022

 

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


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

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


жаль, я хотел знакомому оптимальный вариант скинуть, что бы у него проблем не было.

Отправлено: 22:51, 14-10-2022 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Zoidman:
вытащить английский текст для перевода (таких файлов много) »
Это можно сделать, но DJ Mogarych, правильно выше сказал, придется заморочиться с добавлением корневого тега в каждый файл, ибо это не валидные xml. И даже это не очень большая проблема, можно автоматизировать добавление тегов, но при условии, что структура всех файлов одинаковая.

-------
scio me nihil scire. Ѫ


Отправлено: 08:32, 15-10-2022 | #12


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Zoidman:
хотел знакомому оптимальный вариант скинуть »
Про условия - ничего не изменилось...
В первом приближении:
Powershell:
Добавление тегов:
script_addtag.ps1
Код: Выделить весь код
param (
	$path = '.\TEST',
	$flt = '*.xml',
	$enc = 'utf8'
)
dir $path -filter $flt -file|%{
	$tmp = $_.fullname
	if (($text = (gc $tmp -enc $enc -raw)) -notmatch '<root>'){
		$text = $text -replace '(<\?xml version="1\.0" encoding="UTF-8"\?>)',"`$1`r`n<root>"`
		-replace '([^\r\n][\r\n]*)$',"`$1`r`n</root>"
		$text |out-file $tmp -enc $enc
	}
}
Собственно, получение CSV-файла с данными:
script.ps1
Код: Выделить весь код
param (
	$path = '.\TEST',
	$filter = '*.xml',
	$par1 = 'name',
	$par2 = 'desc',
	$par3,
	$par4,
	$enc = 'utf8',
	$out = '.\out.csv'
)
function custom-obj ($f,$id,$k,$l,$m,$n) {
	[pscustomobject]@{
		'FILE' = $f
		'ACHIEVE_ID' = $id
		'PARAM_1' = if ($k){$k} else {'NULL'}
		'PARAM_2' = if ($l){$l} else {'NULL'}
		'PARAM_3' = if ($m){$m} else {'NULL'}
		'PARAM_4' = if ($n){$n} else {'NULL'}
	}
}

$arr = dir $path -filter $filter -file|%{
	$file = $_.name
	[xml]$xml = gc $_.fullname -enc $enc
	$xml.selectnodes("//achievement") |%{
		custom-obj $file $_.id $_.$par1 $_.$par2 $_.$par3 $_.$par4
	}
}
$arr| convertto-csv |out-file $out -enc $enc
Путь к каталогу с XML-файлами можно указать и абсолютный.
Скрипты можно запускать с параметрами. Например:
Код: Выделить весь код
.\script_addtag.ps1 -path 'D:\XML'
.\script.ps1 -path 'D:\XML' -filter '*.xml' -par1 'name' -par2 'desc' -par3 'tooltip' -par4 'type'

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 15-10-2022 в 12:06.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:59, 15-10-2022 | #13



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Замена части строки с условием (sed, awk) DJ Mogarych Программирование в *nix 3 15-01-2020 13:30
CMD/BAT - Копирование группы файлов с условием APST Скриптовые языки администрирования Windows 8 28-04-2018 09:35
Помогите с двумя скриптами (резервное копирование и копирование с условием) n_i_x Программирование в *nix 3 21-06-2015 01:54
CMD/BAT - [решено] Копирование папок с условием sjaybez Скриптовые языки администрирования Windows 6 03-08-2014 22:19
CMD/BAT - [решено] .bat Копирование с условием TwoThrones Скриптовые языки администрирования Windows 1 09-01-2011 14:51




 
Переход