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

如何通过PowerShell循环批量处理一级子目录的媒体文件

整理家庭视频和图片:实现脚本遍历一级子目录自动分类

问题背景

我需要为家人整理家庭视频和图片,现有脚本可正常运行,但需手动在每个目录执行。希望修改脚本,让它仅针对一级子目录运行,从E盘根目录循环处理,最终让每个一级子目录都像示例里的Charlie目录一样,自动分出pictures和videos子目录存放对应文件。

当前使用的简易脚本

分别处理图片和视频的两个独立脚本:

图片分类脚本

$current_dir = Split-Path -Path $pwd -Leaf
$new_path = "H:\sorted\$current_dir\pictures"

Get-ChildItem -R . -Include ('*.jpg', '*.jpeg', '*.png') | Move-Item -Destination (New-Item -Force -Path "$new_path" -Type Directory)

视频分类脚本

$current_dir = Split-Path -Path $pwd -Leaf
$new_path = "H:\sorted\$current_dir\videos"

Get-ChildItem -R . -Include ('*.mp4', '*.mkv', '*.3pg','*.flv', '*.mov', '*.gif') | Move-Item -Destination (New-Item -Force -Path "$new_path" -Type Directory)

示例文件结构

E:.
├───April9383
├───April98765
│   └───carson
├───Cathy
├───Cathy(1)
├───Charlie
│   ├───Photos
│   └───Videos
├───daleville

尝试过的代码(未成功)

我曾尝试用循环调用脚本,但获取的是父文件夹名称,而非目标一级子目录:

$sub_dir = $(Get-ChildItem . -Depth 1)

foreach ($sub in $sub_dir)  {
    picture-sort.ps1
}

已解决:最终脚本

参考@Santiago的回复并稍作修改后,得到可以自动遍历一级子目录并分类的完整脚本:

$base = "E:\sorted"
$current_dir = $pwd
# 获取一级子目录并遍历
Get-ChildItem . -Depth 0 -Directory | ForEach-Object {
    # 拼接目标路径
    $path = Join-Path $base -ChildPath $_.Name
    $pic_path = "$path\pictures"
    $vid_path = "$path\videos"
    
    # 拼接源目录路径
    $stripped_dest_path = Split-Path -Path $path -Leaf
    $src_path = Join-Path $current_dir  $stripped_dest_path 
    
    # 输出处理日志
    Write-Output "正在从 $src_path 复制图片到 $pic_path"
    # 移动所有图片文件
    Get-ChildItem -R $src_path -Include ('*.jpg', '*.jpeg', '*.png') |
        Copy-Item -ErrorAction SilentlyContinue -Destination (New-Item -Force -Path "$pic_path" -Type Directory)

    # 输出处理日志
    Write-Output "正在从 $src_path 复制视频到 $vid_path"
    # 移动所有视频文件
    Get-ChildItem -R $src_path -Include ('*.mp4', '*.mkv', '*.3pg','*.flv', '*.mov', '*.gif', '*.avi') |
        Copy-Item -ErrorAction SilentlyContinue -Destination (New-Item -Force -Path "$vid_path" -Type Directory)

    Write-Output "当前目录处理完成"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:55:16