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

如何在Get-ChildItem操作中排除指定文件夹和.log类型文件?

问题原因

原代码失效是因为Get-ChildItem的-Exclude参数在搭配-Recurse使用时,仅能匹配目标对象的名称段,无法识别完整路径规则,也不会自动排除指定目录下的所有子内容,所以无法过滤掉image文件夹内的文件。

修正后脚本
$WebAppFolder = 'C:\ReleaseBackupScript\MyWebSite'
# 递归获取所有文件后通过两层规则过滤
$filteredList = Get-ChildItem -Path $WebAppFolder -Recurse -Force -File | 
    Where-Object {
        # 排除所有存放在image目录下的文件
        $_.FullName -notlike "$WebAppFolder\image\*" -and
        # 排除后缀为.log的文件
        $_.Extension -ne '.log'
    } | Select-Object -ExpandProperty FullName

# 输出过滤后的文件列表到文本
Out-File -FilePath FilteredList.txt -InputObject $filteredList

注:代码里加了-File参数只获取文件,过滤掉文件夹对象,如果需要保留文件夹可以移除该参数。

可选:直接生成压缩包

如果不需要保留中间文件列表,可以直接将过滤结果传给压缩命令:

$WebAppFolder = 'C:\ReleaseBackupScript\MyWebSite'
$backupPath = 'C:\Backup\website_backup.zip' # 替换为你实际的备份包路径

Get-ChildItem -Path $WebAppFolder -Recurse -Force | 
    Where-Object {
        $_.FullName -notlike "$WebAppFolder\image\*" -and
        $_.Extension -ne '.log'
    } | Compress-Archive -DestinationPath $backupPath -Force

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:39:03