我试图从CSV文件中获取值。
如果今天的日期= DateInCSVFile,则提供"键"值。
Keys.csv
Guest,Key
1-Jun,OIOMY-ZFILZ
2-Jun,LSSJC-PDEUL
3-Jun,MQNVJ-TETLV
4-Jun,HCJIJ-ECVPY
5-Jun,SPACR-AJSLU
6-Jun,MEURS-UQTVX
代码:
$today = Get-Date -format dd-MMM
$keys = import-csv c:\office\keys.csv -Header @(1..2)
$data = $keys | ? { $_.1 -match $today}
Write-Host $data.2
我尝试了foreach
和if
命令。没有任何效果。
答案 0 :(得分:0)
我可以想到几个选择。如果你想要快速和肮脏的东西,试试:
$stuff = Import-Csv -Path .\stuff.csv
foreach ($thing in $stuff) {
if ( $thing.Guest -eq $(Get-date -Format 'd-MMM') ) {
Write-Output $thing.Key
}
}
我将CSV文件的内容导入变量。我遍历每一行。如果Guest中的一天与当天匹配,我输出密钥
答案 1 :(得分:0)
代码的唯一问题是您的日期格式dd-MMM
,正如LotPings所示:
它创建0
- 单位数天的左填充数字,例如6
,而CSV中的日期没有这样的填充。
因此,将Get-Date -format dd-MMM
更改为Get-Date -format d-MMM
(仅d
而不是dd
)可以解决您的问题。
但是,鉴于您无论如何都要将整个文件读入内存,您可以优化命令到(PSv4 +):
$today = Get-Date -Format d-MMM
(Import-Csv c:\office\keys.csv).Where({ $_.Guest -eq $today }).Key
另请注意,-match
的目的是执行基于正则表达式的匹配,而不是(不区分大小写)字符串相等;使用-eq
作为后者。