You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell导入CSV筛选特定日期格式问题求助

问题分析与解决方案

嘿,我来帮你捋清楚这个问题的根源和解决办法~

为什么当前代码不生效?

你遇到的问题核心是对PowerShell中-Like/-NotLike运算符的理解有误:

  • 这两个运算符是通配符匹配,不是简单的字符包含判断。当你直接写-NotLike "-"时,PowerShell会认为你要筛选**整个"Date Of Birth"字段完全等于"-"**的记录,而你的数据里显然没有这样的行,所以返回空结果。
  • 当你设置$SearchFor = "/"时,-NotLike "/"会排除那些字段值完全是"/"的记录,但你的CSV里没有这种数据,所以自然返回了所有行。

正确的筛选方法

方法1:用通配符实现字符包含判断

如果只是简单区分包含"-"还是"/"的日期,给搜索字符串加上通配符*(代表任意长度的任意字符)即可:

# 筛选格式为yyyy-MM-dd(包含"-")的记录
Import-CSV C:\Test\TestFile.csv | Where-Object { $_.'Date Of Birth' -like "* -*" }

# 或者反过来,排除包含"/"的记录,效果一样
Import-CSV C:\Test\TestFile.csv | Where-Object { $_.'Date Of Birth' -notlike "*/*" }

方法2:用正则表达式精准匹配格式

如果你想严格确保是yyyy-MM-dd的日期格式(避免字段里有其他"-"但不是日期的情况),推荐用-Match运算符搭配正则表达式:

Import-CSV C:\Test\TestFile.csv | Where-Object { $_.'Date Of Birth' -match '^\d{4}-\d{2}-\d{2}$' }

这个正则表达式的意思是:

  • ^:匹配字符串开头
  • \d{4}:匹配4位数字(年份)
  • -:匹配连字符
  • \d{2}:匹配2位数字(月份/日期)
  • $:匹配字符串结尾
    这样能精准筛选符合标准日期格式的记录。

内容的提问来源于stack exchange,提问作者Fler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:49:39