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

递归查找.raw文件按创建时间排序后批量重命名复制的PowerShell问题

问题分析与解决方案

原代码存在几个关键问题:

  • 直接对ZIP压缩包路径执行Get-ChildItem无效,PowerShell无法直接遍历压缩包内的文件,需先解压到本地文件夹
  • 使用$_.ReadCount作为序号错误,该属性并非用于标识文件顺序,需手动维护自增序号
  • 目标路径指向ZIP文件内部不符合文件系统操作逻辑,需指定本地磁盘的实际目录

正确操作步骤与代码

  1. 先解压ZIP包到本地文件夹(若未解压):
Expand-Archive -Path 'F:\Downloads\raw-20221121T200702Z-001.zip' -DestinationPath 'F:\Downloads\raw_extracted' -Force
  1. 递归查找、排序、复制并重命名文件:
# 定义源目录(解压后的文件夹)和目标目录
$sourceDir = 'F:\Downloads\raw_extracted'
$targetDir = 'F:\Downloads\raw_extracted\test'

# 创建目标目录(不存在则自动创建)
if (-not (Test-Path $targetDir)) {
    New-Item -ItemType Directory -Path $targetDir | Out-Null
}

# 初始化序号计数器
$counter = 1

# 遍历.raw文件、按创建时间升序排序、逐个复制并重命名
Get-ChildItem -Path $sourceDir -Recurse -Filter *.raw | 
    Sort-Object CreationTime | 
    ForEach-Object {
        # 格式化4位序号的文件名
        $newFileName = "IMG_001_{0:D4}.jpg" -f $counter
        # 拼接目标路径并执行复制
        Copy-Item -Path $_.FullName -Destination (Join-Path $targetDir $newFileName)
        # 序号自增
        $counter++
    }

关键细节说明

  • 使用-Filter *.raw比-Include更高效,递归遍历无需额外处理
  • {0:D4}格式化字符串确保序号为4位数字(如1自动转为0001)
  • Join-Path用于安全拼接路径,避免手动拼接时的路径分隔符错误
  • 先检查目标目录是否存在,防止因目录缺失导致复制失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:32:18