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

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

Ответить
Настройки темы
VBS/WSH/JS - Скопировать определенные строки в кодировке "UTF-8" из .txt - файлов

Аватара для KOD65001

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


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

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


Есть папка "111" в ней много разных подпапок с разными уровнями. В подпапках текстовые файлы в количестве примерно 14500 штук с расширением .txt большая часть текстовых файлов сохранены в кодировке юникода "UTF-8", также НЕКОТОРЫЕ из них сохранены в кодировке ANSI. Внутри этих текстовых файлов имеются строки в количестве примерно от 5 до 500 СТРОК в каждом текстовом файле.
В каждой строке МОГУТ содержаться пробелы в начале, в конце, в середине, даже пробелы есть после и перед разделителями (":" "=" "-") и пустые строки между строками.
Вот пример того, какой текст содержится в одном текстовом файле внутри:
(текст с непонятными иероглифами - это тайский язык, взят для примера)


РуЧкА!$#
БоЧкА:© นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥I♥©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ
БоЧкА : © นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥I♥©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ

https://taxi.yandex.ru/
БоЧкА =Ґ ©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ © นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥Iв™

диск
www.avito.ru/sankt-peterburg/
БоЧкА - !@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()


http://www.avito.ru/
БоЧкА Д!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()
БоЧкАФ!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()
serVeR !!!"""№№№;;;%% %:::???***((()))!!!"""№№№;;;%%%:::???* **((()))
serVeR:© นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥I♥©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ
serVeR : © นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥I♥©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ
serVeR =Ґ ©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ © นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥Iв™

Адреса сайтов...

https://www.avito.ru/irkutsk/
serVeR - !@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()

диск
serVeR Д!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()

serVeR!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()



Нужно чтобы после запуска VBS скрипта с помощью использования "ADO"
Создался ОДИН текстовый файл с расширением .txt в него скопировать строки идущие после разделителя и без разделителя, указанных слов..в нашем примере это:"БоЧкА" "serVeR". А те части строчки которые идут после разделителей ":" где адреса сайтов будут игнорироваться, адреса сайтов мне не нужны! В основу кода можно взять то что они начинаются со строк "https" "http" "www"! Слова "БоЧкА" "serVeR" взяты чисто для примера, но по возможности нужно сделать так, чтобы их можно было в скрипте vbs поменять на свои, они могут быть написаны русскими словами или английскими ("указынные слова" не используют спецсимволы юникода). Убрать все пробелы которые которые идут между разделителем (":" "=" "-") и началом части строки (которая в юникоде записана), удалить пустые строки. Заранее извиняюсь, если я не все объяснил, просто я новичок, прошу сильно не пинать. Я только начинаю изучать создание скриптов VBS. Рассматривать буду разные методы решения одной и той же задачи НА VBS - это для моего познания так сказать
Вот что должно получиться после запуска VBS скрипта с помощью использования "ADO"



© นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥I♥©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ
© นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥I♥©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ
Ґ ©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ © นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥Iв™
!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()
Д!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()
Ф!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()
!!!"""№№№;;;%% %:::???***((()))!!!"""№№№;;;%%%:::???* **((()))
© นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥I♥©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ
© นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥I♥©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ
Ґ ©Спасибо♥ ¤ © 办公室 λ ½ ▅ & $ 4 Рё En ц™ มิ © นี่คือวันอันยิ่งใหญ่ ♥ SёЁщы©♥Iв™
!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()
Д!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()
!@#$%^&*() !@#$%^&*() !@#$%^&*()!@# $%^&*()!@# $%^&*()!@#$%^&*()

Отправлено: 14:49, 17-06-2020

 

Аватара для Fors1k

Старожил


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

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


Код: Выделить весь код
param(
    $PathIn  = "C:\Files\111",
    $PathOut = "C:\result.txt",
    $words   = ("serVeR","БоЧкА"),
    $delims  = ("-"," ", "=",":")
)cls

gci  $pathin  *.txt|%{(((gc  $_.FullName -raw)|
sls  "(?<=($($words -join '|'))).*"-a).Matches.
Value).TrimStart($delims)|out-file $PathOut -a}

Последний раз редактировалось Fors1k, 22-06-2020 в 14:40.

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

Отправлено: 13:01, 22-06-2020 | #2



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

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


Аватара для KOD65001

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


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

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


Изображения
Тип файла: jpg 2020-06-26_120604.jpg
(46.9 Kb, 5 просмотров)

Цитата Fors1k:
param(
$PathIn = "C:\Files\111",
$PathOut = "C:\result.txt",
$words = ("serVeR","БоЧкА"),
$delims = ("-"," ", "=",":")
)cls
gci $pathin *.txt|%{(((gc $_.FullName -raw)|
sls "(?<=($($words -join '|'))).*"-a).Matches.
Value).TrimStart($delims)|out-file $PathOut -a} »

Отправлено: 12:13, 26-06-2020 | #3


Аватара для KOD65001

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


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

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


Fors1k, во время запуска появляется окно с ошибкой, строка 1 символ 7

Отправлено: 12:15, 26-06-2020 | #4


Аватара для Fors1k

Старожил


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

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


Этот код вам нужно выполнить в PowerShell.

Последний раз редактировалось Fors1k, 26-06-2020 в 13:01.


Отправлено: 12:51, 26-06-2020 | #5


Аватара для KOD65001

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


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

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


Изображения
Тип файла: jpg 2020-06-26_131316.jpg
(84.3 Kb, 4 просмотров)

Да, догадался что в PowerShell нужно выполнить ...но тем не менее все равно и в PowerShell ошибки красные показывает...я видимо что то не так делаю. Сохранял в буфер обмена код и вставлял, потом пробовал просто файл с кодом сохранить в расширении .ps1 и нажимал выполнить в PowerShell, красные ошибки повторяются в разных вариантах, хотя пути пробовал ставить как в коде. Скриншот ошибки в PowerShell во вложении

Отправлено: 13:26, 26-06-2020 | #6


Аватара для Fors1k

Старожил


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

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


Нужно разрешить выполнение скриптов.
Запустите powershell от администратора, и выполните
Код: Выделить весь код
Set-ExecutionPolicy Unrestricted -Force
После запускайте нужные скрипты.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:41, 26-06-2020 | #7


Аватара для KOD65001

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


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

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


Спасибо Fors1k! Код Работает отлично! Данные из текстового файла сохраняет нужные! Но это только при условии, если все текстовые файлы расположены по пути C:\Files\111\eee.txt Можно ли сделать так чтобы проверялись в "указанной папке" и все ее "ПОДПАПКИ" (текстовые файлы) + как то сделать так чтобы в "текстовом файле результата" не повторялись строчки т.е. чтобы не были строчки одинаковыми. Дело в том, что среди многочисленных текстовых файлах может встретиться одинаковая строчка, хотя имя текстового файла может быть разным.

Отправлено: 14:27, 26-06-2020 | #8


Аватара для Fors1k

Старожил


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

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


Код: Выделить весь код
param(
    $PathIn  = "C:\Files\111",
    $PathOut = "C:\result.txt",
    $words   = ("serVeR","БоЧкА"),
    $delims  = ("-"," ", "=",":")
)cls

gci $pathin  *.txt -rec|%{(((gc  $_.FullName -raw)|
sls  "(?<=($($words -join '|'))).*"  -all).Matches.
Value).TrimStart($delims).Trim()|%{if($_ -notin $t)
{$_|out-file  $PathOut -append;[string[]]$t+= $_}}}

Последний раз редактировалось Fors1k, 26-06-2020 в 20:14.

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

Отправлено: 18:42, 26-06-2020 | #9


Аватара для KOD65001

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


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

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


Теперь код выполняет все что нужно! Код - супер! Большая благодарность Fors1k за предоставленный код! Задача можно сказать уже решена. Мне будет еще интересно узнать, какими еще вариантами можно выполнить эту же задачу? Это для моего познания. В PowerShell все хорошо работает, а например на vbs или даже в bat вот такое возможно ли реализовать?

Отправлено: 15:54, 27-06-2020 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Скрипт: "ProgrBar" копирования всех файлов из папки "Media" ufooo000 Скриптовые языки администрирования Windows 5 20-07-2017 20:58
CMD/BAT - Как из строки в .txt вывести символы "которые там обновляются"в другой .txt Bombastig Скриптовые языки администрирования Windows 6 08-02-2014 04:54
CMD/BAT - [решено] Нужно создать "батник" - вырезать из "2.txt" первых n строк и вставить их в "1.txt" temphard Скриптовые языки администрирования Windows 12 10-01-2014 18:36
CMD/BAT - вытащить из 3-x txt файлов строки в 4-й txt и отправить его в шару на сервер campbell Скриптовые языки администрирования Windows 1 10-11-2011 09:59
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход