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

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

Ответить
Настройки темы
CMD/BAT - Поиск строки в файлах *.xml с кодировкой 65001 (UTF-8) без BOM

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


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

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


Нужна помощь в решении задачи.

Имеется папка с файлами xml с кодировкой 65001 (UTF-8) без BOM в которых есть строки х912хм, х812хх, л845ка и т.д.
Все эти строки я записал в папку 1.txt
Теперь код программы, который берет строку из файла 1.txt и сверяет её на наличие в файлах xml, если такая строка имеется, то перенести этот файл в другую папку.

@echo off

set "list=D:\12345678\1.txt"
set "from=D:\12345678"
set "to=D:\12345678\sort"

for /f "usebackq delims=" %%i in ("%list%") do (
for /f "delims=" %%j in ('findstr/ilmc:"%%i" "%from%\*.xml"') do (
for /f "delims=" %%k in ('2^>nul dir/a-d/b "%from%\%%~nj.*"') do (
if "%%~nk" equ "%%~nj" move/y "%from%\%%k" "%to%\"
)
)
)

pause

exit/b


Данный код программы не работает и я не могу решить ее, хотя если я в файле 1.txt оставлю только цифры, то код программы находит строку и переносит файл.

Отправлено: 00:15, 03-04-2015

 

Ветеран


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

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


Код: Выделить весь код
@echo off

set "list=D:\12345678\1.txt"
set "from=D:\12345678"
set "to=D:\12345678\sort"

for /f "usebackq delims=" %%i in ("%list%") do (
 for /f "delims=" %%j in ('2^>nul dir/a-d/b "%from%\*.xml"') do (
  for /f %%k in ('^<"%from%\%%j" find/i "%%i"') do (
   for /f "delims=" %%l in ('2^>nul dir/a-d/b "%from%\%%~nj.*"') do (
    if "%%~nl" equ "%%~nj" move/y "%from%\%%l" "%to%\"
   )
  )
 )
)

exit/b
Цитата 053131:
Все эти строки я записал в папку 1.txt »

Список сохраните в кодировке UTF-8.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:26, 03-04-2015 | #2



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

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


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


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

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


Пробовал, не ищет.

Отправлено: 00:52, 03-04-2015 | #3


Ветеран


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

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


Цитата 053131:
Пробовал, не ищет. »

Цитата Georgio:
Список сохраните в кодировке UTF-8. »

Отправлено: 01:27, 03-04-2015 | #4


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


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

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


Вложения
Тип файла: txt 1.txt
(29 байт, 9 просмотров)
Тип файла: xml 0d6a8f8a577dcdafcaf5afec8a963048.xml
(896 байт, 10 просмотров)
Тип файла: xml 1c0d73e7d3a437fc6d2c65b30f6e920a.xml
(896 байт, 9 просмотров)

Я сохранял все равно не получается.

Я прикрепил файлы у кого есть время может посмотрите.

Отправлено: 08:27, 03-04-2015 | #5


Ветеран


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

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


Цитата 053131:
Я сохранял все равно не получается. »
У меня получается на Ваших файлах:
Цитата:
Код: Выделить весь код
C:\Песочница\069>0001.cmd
move /y "C:\Песочница\069\0d6a8f8a577dcdafcaf5afec8a963048.xml" "C:\Песочница\069\01\"
move /y "C:\Песочница\069\1c0d73e7d3a437fc6d2c65b30f6e920a.xml" "C:\Песочница\069\01\"

Отправлено: 16:17, 03-04-2015 | #6


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


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

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


Что получается? просто перенести файлы?

Отправлено: 21:57, 03-04-2015 | #7


Ветеран


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

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


Цитата 053131:
Что получается? »
Корректное исполнение кода пакетного файла, приведённого выше коллегой Georgio. На тех файлах, которые Вы выложили. По тексту, приведённому в файле «1.txt», находятся файлы «0d6a8f8a577dcdafcaf5afec8a963048.xml» и «1c0d73e7d3a437fc6d2c65b30f6e920a.xml», каковые затем перемещаются в папку, указанную в переменной окружения «to» в коде вышеуказанного пакетного файла.

Последний раз редактировалось Iska, 04-04-2015 в 03:51. Причина: Грамматика: добавлена пропущенная запятая


Отправлено: 00:01, 04-04-2015 | #8


Ветеран


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

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


Команда "FIND" в файлах в кодировке UTF-8 "копается", но вот только непонятно, как она "относится" к наличию в этих файлах кириллицы. Поэтому попробуйте такой вариант:


Код: Выделить весь код
@echo off

set "list=D:\12345678\1.txt"
set "from=D:\12345678"
set "to=D:\12345678\sort"

powershell "gci '%from%' -filter '*.xml'|%%{$x=$_.basename;gc $_.fullname|%%{$y=$_;gc '%list%'|%%{if($y.contains($_)){[array]$z+=$x;clv x}}}};$z|%%{mi ('%from%\'+$_+'.*') '%to%'}"

exit/b 0

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

Отправлено: 18:49, 04-04-2015 | #9


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


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

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


Georgio, я извиняюсь, у меня все получилось, я не внимательно посмотрел код который вы написали, он прекрасно работает, также код через оболочку powershell работает, даже чуть быстрее.
Большое спасибо Вам. :-)

Отправлено: 01:24, 05-04-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Как с помощью JS изменить кодировку документа на utf-8 без bom ? dark-------13 Скриптовые языки администрирования Windows 7 16-10-2013 07:59
CMD/BAT - Поиск и удаление строки в такестовых файлах одного каталога DmAv2k9 Скриптовые языки администрирования Windows 6 18-09-2013 01:05
CMD/BAT - [решено] Вставить имя файла в текстовый файл (UTF-8 without BOM) Jahnhoy Скриптовые языки администрирования Windows 11 19-09-2011 17:39
[решено] Поиск <строки> в XML semiono AutoIt 28 17-11-2010 19:53
CMD/BAT - [решено] Проблема с chcp 65001 (utf-8) в батнике volk1234 Скриптовые языки администрирования Windows 3 06-10-2009 17:06




 
Переход