|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Создание .bat файла для выборки строк из .csv файла в .xlsx |
|
|
CMD/BAT - Создание .bat файла для выборки строк из .csv файла в .xlsx
|
Новый участник Сообщения: 22 |
Профиль | Отправить PM | Цитировать Суть такова. Есть 6 csv файлов с разными именами, в них по 4 столбца. В первом столбце мак хэш сетевого устройства, во втором дата и время (чч.мм.гггг чч:мм), в третьем уровень сигнала (-25 например), в четвертом название устройства.
Необходим скрипт (он будет в папке с csv файлами), при запуске которого в csv файле с именем "C46E1F5A5DD4" во втором столбце будут искаться ячейки где перерыв во времени составляет больше 5 минут. Выглядит этот столбец так: 61C5CDFAF15E602BA6FBF558497AD741 09.12.2015 11:35 -53 nokia 8F5B5E1AFE81B77705310942D9A5ED15 09.12.2015 11:35 -75 samsung DC34B0E1B18874CE58AA9C81FB468340 09.12.2015 11:35 -69 samsung D4F0561F459F304F7BB77E42F7C2F096 09.12.2015 11:35 -69 samsung D2D6DB4EF7C69060CA87934F930E23BA 09.12.2015 11:35 -80 samsung 0E3E3642F5275969DBDE043823F95B30 09.12.2015 11:43 -52 A10AE2D6CD32B0CAD6505E29ABADCB18 09.12.2015 11:43 -75 local DD9AF3BB214ED6AD3301956BAFB0AB74 09.12.2015 11:43 -72 apple Жирным текстом выделены строки перерыв между которыми составляет больше 5 минут. Нужно чтобы скрипт нашел все эти строки в файле csv, для него создал xlsx файл и вогнал обе эти строки в этот xlsx файл. Всего строк в этих файлах по 40-50 тысяч, визуально все строки просмотреть и вычислить где-же интервал составляет более 5 минут - очень тяжко. Глаза буквально вываливаются из орбит. Помогите пожалуйста, очень вас я прошу. |
|
Отправлено: 14:07, 10-12-2015 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Цитата GODolubOFF:
средствами экзеля делается не сложно вроде(создается таблица и поля туда тянуться с условиями из других файлов) |
|
Отправлено: 14:38, 10-12-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1758
|
GODolubOFF, С помощью PowerShell (это быстрей, чем вручную):
$csv = (get-content C46E1F5A5DD4.csv) -replace '(\s)+','$1' | foreach { [pscustomobject] @{ hesh = $_.split()[0] date = [datetime]($_.split()[1,2] -join ' ') freq = $_.split()[3] brеnd = $_.split()[4] } } 0..($csv.length - 1) | foreach { if ($check) { if (($csv[$_].date - $check).minutes -ge 5) { [array] $new_csv += $csv[($_-1)] $new_csv += $csv[$_] $check = $null } } else { $check = $csv[$_].date } } $new_csv | convertto-csv -notypeinfo | out-file new.csv |
Отправлено: 15:02, 10-12-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 15:40, 10-12-2015 | #4 |
Новый участник Сообщения: 22
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
PS C:\Users\Aleksandr> $csv = (get-content C46E1F07AF88.csv) -replace '(\s)+','$1' | foreach { >> >> [pscustomobject] @{ >> >> hesh = $_.split()[0] >> date = [datetime]($_.split()[1,2] -join ' ') >> freq = $_.split()[3] >> brеnd = $_.split()[4] >> >> } >> } >> Не удается преобразовать значение "7:52:46;-65;" в тип "System.DateTime". Ошибка: "Строка не распознана как действитель ное значение DateTime." строка:2 знак:1 + [pscustomobject] @{ + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: ( [], RuntimeException + FullyQualifiedErrorId : InvalidCastParseTargetInvocationWithFormatProvider |
||
Отправлено: 17:14, 10-12-2015 | #5 |
Ветеран Сообщения: 1758
|
Цитата GODolubOFF:
|
|
Отправлено: 17:37, 10-12-2015 | #6 |
Новый участник Сообщения: 22
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
http://depositfiles.com/files/pmrnuqlx4 |
|
Отправлено: 17:45, 10-12-2015 | #7 |
Ветеран Сообщения: 1758
|
GODolubOFF, Попробуйте, я особо результат не проверял, но что-то на выходе похожее на правду получается:
$csv = import-csv -delimiter ';' -header 'Hash','DateTime','SignalLevel','Brand' C46E1F07AF88.csv $check = [datetime] $csv[0].datetime 1..($csv.count-1) | foreach { if (([datetime] $csv[$_].datetime - $check).minutes -ge 5) { [array] $new_csv += $csv[($_-1)] $new_csv += $csv[$_] $check = [datetime] $csv[$_].datetime } } $new_csv | convertto-csv -notypeinfo | out-file new.csv |
Отправлено: 18:47, 10-12-2015 | #8 |
Новый участник Сообщения: 22
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
Вот, то что на выходе получилось: http://depositfiles.com/files/dqeso2y2x |
|
Отправлено: 10:11, 11-12-2015 | #9 |
Ветеран Сообщения: 1758
|
GODolubOFF, Я правильно понял, что, например 08:00:59 и 08:05:00 попадают в результирующий файл? Тогда:
$csv = import-csv -delimiter ';' -header 'Hash','DateTime','SignalLevel','Brand' C46E1F07AF88.csv $check = [datetime] $csv[0].datetime.replace(':\d{2}$',$null) 1..($csv.count-1) | foreach { if ((([datetime] $csv[$_].datetime.replace(':\d{2}$',$null)) - $check).minutes -gt 5) { [array] $new_csv += $csv[($_-1)] $new_csv += $csv[$_] $check = [datetime] $csv[$_].datetime.replace(':\d{2}$',$null) } } $new_csv | convertto-csv -notypeinfo | out-file new.csv |
Последний раз редактировалось Foreigner, 11-12-2015 в 12:52. Отправлено: 12:45, 11-12-2015 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Создание bat файла c помощью другого bat файла | GODolubOFF | Скриптовые языки администрирования Windows | 11 | 03-01-2016 20:30 | |
CMD/BAT - Создание bat файла для работы с файлами. | Bugaga321 | Скриптовые языки администрирования Windows | 2 | 22-04-2015 22:37 | |
CMD/BAT - [решено] Создание CSV файла | Miravild | Скриптовые языки администрирования Windows | 9 | 04-11-2013 22:04 | |
PowerShell - [решено] Замена строк из файла строками из файла в файле | bcubbs@fb | Скриптовые языки администрирования Windows | 6 | 24-01-2013 17:22 | |
CMD/BAT - Запуск BAT файла с правами локального пользователя из сетевого BAT файла | Yurii_L | Скриптовые языки администрирования Windows | 9 | 05-09-2012 14:27 |
|