#powershell #csv #import-csv #export-csv
Вопрос:
У меня есть текстовый файл, разделенный запятыми, который я пытаюсь запустить с помощью скрипта, чтобы получить данные только за текущий месяц. Когда я запускаю скрипт, он выводит файл, содержащий только строку заголовка, а остальные-просто строки с запятыми:
Header1, Header2, Header3, Jan
,,,
,,,
,,,
Столбцы исходных файлов состоят из именованных заголовков, а затем данных за 12 месяцев, где заголовки представляют собой аббревиатуру месяца из 3 букв. т. е.: Январь = Январь
Мой код здесь:
$date = Get-Date -Format MMM
(Import-CSV "C:file.txt") |
Select "Header1","Header2","Header3","$date" |
Export-Csv -Delimiter "," -path "C:temp.txt" -NoTypeInformation | % {$_.Replace('"','')}
Кроме того, если у меня нет первого канала, окно powershell правильно отображает данные, которые я пытаюсь получить, но выдает пустой файл.
Комментарии:
1. То, что вы хотите использовать для фильтрации, —
Where{}
это утверждение, а неSelect
утверждение. Что-то вродеImport-CSV C:file.txt | Where{(Get-Date $_.Date).Month -eq (get-date).Month}|Export-Csv c:temp.txt -del ',' -notype
(это при условии, что у вас в исходном файле есть столбец с пометкой «Дата»)2. Нет, файл состоит из 12 столбцов денежных данных, где в заголовке указана аббревиатура месяца из 3 букв. Я обновил вопрос с помощью этой информации, но я постараюсь настроить ваше решение для работы.
3. Пожалуйста, предоставьте образец CSV-файла. Кроме того, пожалуйста, попробуйте сократить образец кода до необходимого минимума, чтобы устранить проблему. (Допустим, вы
Import-CSV
не добьетесь успеха, тогда все остальное имеет отношение к этому вопросу.)4. Вы используете
Import-Csv
файл .txt, который не имеет особого смысла, это на самом деле CSV? Вы такжеforeach-object
пытаетесь удалить"
Export-Csv
команду «кому», когда этот командлет не выдает никаких выходных данных. По этому вопросу недостаточно подробностей, чтобы дать правильный ответ.
Ответ №1:
Я исправил это сам, присвоив импортированные данные переменной.
$date = Get-Date -Format MMM
$data = (Import-CSV "C:file.txt") |
Select "Header1","Header2","Header3","$date" |
Export-Csv -Delimiter "," -path "C:temp.txt" -NoTypeInformation | % {$_.Replace('"','')}