-2
CSVファイルを処理するための小さなPowerShellスクリプトを作成中です。Import-CSV date-column -lt/-gt(dd.MM.YYYY)
CSVファイルの例:
"lastname";"firstname";"birthday" "meier";"bernd";"23.06.1976" "hoffmann";"sven";"12.04.1955" "berger";"tim";"14.15.2007"
スクリプトは、ユーザーが2つのdatapickersで日付を選択することができ、ウィンドウを作成し、ユーザが誕生日の前か後にあるすべての行を削除することができすべき選択された日付。
Function Start-MyImport {
#Build the GUI
[xml]$xaml_ar = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="Title" Height="164.653" Width="498.907" ResizeMode="NoResize" Topmost="True" WindowStartupLocation="CenterScreen">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="27*"/>
<ColumnDefinition Width="464*"/>
</Grid.ColumnDefinitions>
<Button Name="agerange_go" Content="go!" HorizontalAlignment="Left" Height="23" Margin="334,71,0,0" VerticalAlignment="Top" Width="96" Grid.Column="1"/>
<CheckBox Name="agerange_before" Content="birthday before:" Grid.Column="1" HorizontalAlignment="Left" Margin="18,76,0,0" VerticalAlignment="Top"/>
<CheckBox Name="agerange_after" Content="birthday after:" Grid.Column="1" HorizontalAlignment="Left" Margin="18,103,0,0" VerticalAlignment="Top"/>
<DatePicker Name="dp_before" Grid.Column="1" HorizontalAlignment="Left" Margin="176,71,0,0" VerticalAlignment="Top"/>
<DatePicker Name="dp_after" Grid.Column="1" HorizontalAlignment="Left" Margin="176,98,0,0" VerticalAlignment="Top"/>
</Grid>
</Window>
"@
$reader_ar = (New-Object System.Xml.XmlNodeReader $xaml_ar)
$Window_ar = [Windows.Markup.XamlReader]::Load($reader_ar)
$xaml_ar.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach {
Set-Variable -Name ($_.Name) -Value $Window_ar.FindName($_.Name)
}
#Events
$agerange_go.Add_Click({
if ($agerange_before.IsChecked) {
$dp_before = $dp_before.Text
if ($dp_before -ne "") {
Write-Host $dp_before
Import-Csv my.csv -Delimiter ";" -Encoding UTF8 |
where birthday -as[DateTime]::ParseExact($_."birthday", "dd.MM.YYYY", $null) -lt $dp_before |
Export-Csv CsvFileOut.csv -Delimiter ";" -Encoding UTF8 -NoTypeInfo
}
}
$Window_ar.Close()
#Lieferant-Repl
})
$Window_ar.ShowDialog() | Out-Null
}
Start-MyImport
問題は、誕生日の列を日付に解析できないことです。私のやり方はうまくいかない。
where birthday -as[DateTime]::ParseExact($_."birthday", "dd.MM.YYYY", $null) -lt $dp_before
これを正しく処理するにはどうすればよいですか?
をIIRC日付形式の月だけ大文字である、あなたは「DD.MM.YYYY」をしようとしましたか? – LotPings