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

如何在PowerShell中打印被移动的符合条件的MP4文件记录

解决方法

首先修正你代码里的逻辑问题,再添加文件移动的日志输出:

1. 修正$MP4Lenght的逻辑错误

你当前的$MP4Lenght = (Get-ChildItem -Path $RenderFolder).Length -ne "0"是在判断$RenderFolder下的文件总数是否不为0,而非判断MP4文件的大小是否大于0。正确写法应检查该目录下是否存在大小大于0的MP4文件:

# 检查RenderFolder下是否有大小大于0的MP4文件
$validMP4Exists = @(Get-ChildItem -Path $RenderFolder -Filter *.mp4 | Where-Object { $_.Length -gt 0 }).Count -gt 0

2. 添加移动文件的日志输出

以下两种方式均可实现打印每个被移动文件的信息:

方式一:分步遍历处理(直观易读)

逐个处理文件,移动完成后立即打印日志:

$SchoolFolder = "C:\Users\MyUser\Desktop\School Folder\$StudentName\$Month. $MonthWrite\$Day. $DayWrite"
# 修正后的MP4有效性判断
$validMP4Exists = @(Get-ChildItem -Path $RenderFolder -Filter *.mp4 | Where-Object { $_.Length -gt 0 }).Count -gt 0
$MP4existsToCopy = Test-Path -Path "$RenderFolder\*.mp4"

If ($MP4existsToCopy -and $validMP4Exists) {
    # 提前创建目标目录,避免Move-Item报错
    $targetDir = New-Item -Type Directory -Force (Join-Path $SchoolFolder $newSub)
    # 遍历符合条件的文件,移动并打印日志
    Get-ChildItem $MyFolder | Where-Object { $_.Length -gt 0KB } | ForEach-Object {
        Move-Item -Path $_.FullName -Destination $targetDir -Force -ErrorAction SilentlyContinue
        # 打印完整路径,若只需文件名可替换为$_.Name
        Write-Host "[$($_.FullName)] was moved"
    }
    Write-Host "Done!"
}

方式二:利用-PassThru参数批量处理

让Move-Item返回被移动的文件对象,再批量打印日志:

$SchoolFolder = "C:\Users\MyUser\Desktop\School Folder\$StudentName\$Month. $MonthWrite\$Day. $DayWrite"
$validMP4Exists = @(Get-ChildItem -Path $RenderFolder -Filter *.mp4 | Where-Object { $_.Length -gt 0 }).Count -gt 0
$MP4existsToCopy = Test-Path -Path "$RenderFolder\*.mp4"

If ($MP4existsToCopy -and $validMP4Exists) {
    $targetDir = New-Item -Type Directory -Force (Join-Path $SchoolFolder $newSub)
    # 用-PassThru获取移动的文件对象,链式打印日志
    Get-ChildItem $MyFolder | Where-Object { $_.Length -gt 0KB } | 
        Move-Item -Destination $targetDir -Force -ErrorAction SilentlyContinue -PassThru |
        ForEach-Object { Write-Host "[$($_.FullName)] was moved" }
    Write-Host "Done!"
}

补充说明

  • 用Join-Path代替字符串拼接$SchoolFolder + $newSub,可避免路径分隔符缺失/重复的问题
  • $validMP4Exists的判断逻辑,确保只有存在有效大小的MP4文件时,才执行后续移动操作,符合你原本的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:30:50