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

如何用PowerShell和正则表达式移动所有偶数命名文件至指定目录?

解决方法

你的问题出在正则没考虑文件名的.txt后缀:

  • 你测试的正则^[0-9]*[02468]$是匹配纯数字字符串,但实际文件名是数字.txt(比如342.txt),所以完全匹配不上。
  • 之前的命令^[0-9]+[02468]没加结尾锚定$,所以只要文件名开头的数字部分以偶数结尾就能匹配,但因为没限制后缀,理论上三位数也能生效,可能是你测试时的特殊情况导致它只对两位数起作用。

方案1:修正正则匹配完整文件名

调整正则,包含.txt后缀(注意点号要转义成\.,否则会匹配任意字符):

Get-ChildItem | Where-Object {$_.Name -match '^\d*[02468]\.txt$'} | Move-Item -Destination .\foo
  • ^\d*[02468]\.txt$:匹配以任意数量数字开头、最后一位数字是偶数、结尾为.txt的文件名
  • \d是[0-9]的简写,写法更简洁

方案2:提取数字部分判断奇偶(更可靠)

避开正则的局限,直接提取文件名的纯数字部分,转成整数后判断是否为偶数:

Get-ChildItem | Where-Object {
    # 先确保文件名(不含后缀)是纯数字
    $_.BaseName -match '^\d+$' -and
    # 判断数字是否为偶数
    [int]$_.BaseName % 2 -eq 0
} | Move-Item -Destination .\foo

这种方法更灵活,哪怕以后文件名后缀变化(比如.md),或者数字长度改变,都能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:55:16