如何用PowerShell按原目录结构将upscaled图片移入指定新文件夹
解决方案:按原目录结构迁移Upscaled图片
核心逻辑
通过匹配原图片文件名与dump文件夹中带-upscaled后缀的文件名,建立对应关系,将处理后的图片移动到预先创建好的同结构目标文件夹中。
PowerShell 实现代码
# 配置路径:请根据实际文件夹路径修改以下变量 $originalFolder = ".\folder0" $dumpFolder = ".\dump-folder" $targetFolder = ".\folder0-upscaled" # 遍历原文件夹下所有图片(递归处理子文件夹) Get-ChildItem -Path $originalFolder -Filter "*.png" -Recurse | ForEach-Object { # 提取原文件名(不含扩展名) $baseName = $_.BaseName # 构造dump中对应的 upscale 文件名 $upscaledFileName = "$baseName-upscaled.png" $upscaledFile = Join-Path -Path $dumpFolder -ChildPath $upscaledFileName # 检查dump中是否存在该文件 if (Test-Path -Path $upscaledFile) { # 获取原文件相对于原根目录的路径,映射到目标根目录 $relativePath = $_.FullName.Substring($originalFolder.Length) $targetPath = Join-Path -Path $targetFolder -ChildPath $relativePath # 替换目标路径的文件名为 upscale 版本 $targetPath = $targetPath -replace "$baseName\.png$", $upscaledFileName # 移动文件(如需复制而非移动,替换为 Copy-Item) Move-Item -Path $upscaledFile -Destination $targetPath -Force Write-Host "已完成移动: $upscaledFile -> $targetPath" } else { Write-Warning "未找到对应处理后的文件: $upscaledFileName" } }
关键说明
- 路径配置:开头的三个变量需替换为你实际的文件夹路径,确保路径正确。
- 文件格式适配:如果你的图片包含其他格式(如jpg、jpeg),可将
-Filter "*.png"修改为-Filter "*.png","*.jpg","*.jpeg",或直接移除Filter参数遍历所有文件。 - 复制/移动切换:若需要保留dump文件夹中的原文件,将
Move-Item替换为Copy-Item即可。 - 测试建议:执行移动前,可先将
Move-Item行替换为Write-Output "准备移动: $upscaledFile -> $targetPath",确认所有路径匹配正确后再执行实际移动操作。
内容的提问来源于stack exchange,提问作者Polymood
相关产品推荐
相关产品推荐

