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

如何使用PowerShell根据文件名后半段规则移动符合条件的文件

PowerShell按文件名后半段匹配移动文件修改方案

你原来的脚本是截取文件名前半段匹配,要改成匹配后半段(指定后缀结尾),直接修改匹配逻辑即可,以下是可直接使用的修改后脚本:

# 设置源文件夹和目标文件夹路径
$srcpath = "C:\Powershelltest\Source"
$dstpath = "C:\Powershelltest\Destination"

# 设置需要匹配的文件名后缀列表,这里按你的需求添加Stuff.zip,有多个匹配规则直接加在数组里即可
$filterLists = @("Stuff.zip")
 
# 获取源文件夹下所有子文件
$fileList = Get-ChildItem -Path $srcpath -Force -Recurse -File

# 遍历所有文件匹配规则
foreach ($file in $fileList)
{
    foreach($filter in $filterLists)
    {
        # 匹配文件名是否以指定后缀结尾,默认不区分大小写,需要区分可以改成$file.Name.EndsWith($filter, [System.StringComparison]::Ordinal)
        if ($file.Name.EndsWith($filter))
        {
            Move-Item -Path $file.FullName -Destination $dstpath
            # 匹配成功后跳出当前循环,避免重复匹配
            break
        }
    }
}

主要修改点

  • 调整了$filterLists的配置值,改为你需要匹配的文件名结尾字符串,支持同时配置多个规则,比如需要同时匹配Stuff.zip和things.zip,直接写成@("Stuff.zip", "things.zip")即可
  • 删掉了原来截取文件名前半段的逻辑,改用EndsWith方法直接判断文件名是否以指定字符串结尾,精准匹配后半段
  • 新增了Get-ChildItem的-File参数,只遍历文件,避免匹配到文件夹报错
  • 匹配成功后新增break跳出当前循环,减少不必要的遍历

补充说明

如果不需要严格区分大小写的话,也可以把判断条件换成if ($file.Name -like "*$filter"),效果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:45:00