【发布时间】:2023-03-05 11:25:02
【问题描述】:
我需要为生日过滤 CSV 文件。所以所有匹配生日的行都应该导出到一个新的 CSV 文件中。
文件是这样的:
MSISDN;Kunden Anrede;Kunden Vorname;Kunden Nachname;Kunde Stra§e;Kunde PLZ;Kunde Stadt;电子邮件地址;Geburtstag Kunde;PKK;Kundennummer;Vertrag;商店;Aktivierungsdatum 123456789;Herr;Max;Mustermann;Blabla;78999;Stadt;mail@mail;26.07.1980;1999;999999999;Bla;Bla;02.02.2016 123456789;Herr;John;Doe;Blabla;78999;Stadt;mail@mail;26.08.1990;1999;999999999;Bla;Bla;02.02.2016 123456789;Herr;Max;Mustermann;Blabla;78999;Stadt;mail@mail;20.08.1993;1999;999999999;Bla;Bla;02.02.2016这是我的代码:
function Get-FileName($initialDirectory) {
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "CSV (*.csv)| *.csv"
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
}
$inputfile = Get-FileName "C:\temp"
$sOutFile = "C:\output.csv" # Change to your actual path
Import-Csv $inputfile -Delimiter ';' | where {
$_."Geburtstag Kunde" -like "$((Get-Date).Day).$((Get-Date).Month)*"
} | % echo
它让我选择输入文件,但我没有得到匹配文件的回显。我还想将输出写入同一个文件,但附加了 -birthdays。
我猜我必须为每个循环工作。
【问题讨论】:
-
Import-Csv $inputfile -Delimiter ';' | where {$_."Geburtstag Kunde" -like "$((get-date).Day).$((get-date).Month)*"}返回什么? -
您可以将
"$((get-date).Day).$((get-date).Month)*"稍微缩短为"$((Get-Date).ToString('dd.MM*'))" -
文件选择器是否与您的实际问题有关?如果不是,请删除与问题无关的所有内容。 ///// 另外,请发布您的 CSV 文件的第一行,以便人们可以将其与您的代码进行比较。现在代码与您列出的标题不匹配。
-
那么代码不会返回任何内容,即使我添加了今天日期的行来测试过滤器。
-
@user4916097 - 发布 未更改 csv 的 (part),包括标题。正如李所说,你过滤
Geburtstag Kunde,但你发布Birthday...这是什么?
标签: powershell csv export