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

如何编写PowerShell脚本实现JPG文件的复制与重命名?

PowerShell脚本实现JPG文件的复制与重命名

没问题!由于你没给出具体的原文件结构和目标命名规则,我先针对两种最常见的场景写PowerShell脚本,你可以根据自己的实际需求调整:

场景1:批量收集子文件夹中的JPG到统一目录,并重命名为连续编号

如果你的需求是把分散在各个子文件夹里的JPG文件集中复制到一个新目录,同时改成连续编号的格式(比如IMG_001.jpg、IMG_002.jpg),可以用这个脚本:

# 替换成你自己的源目录(要扫描的根文件夹)和目标目录(存放复制后文件的文件夹)
$sourceDir = "C:\Your\Source\Root\Folder"
$targetDir = "C:\Your\Target\Collection\Folder"

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

# 遍历所有JPG文件(包含子文件夹),这里按创建时间排序,可按需修改
$jpgFiles = Get-ChildItem -Path $sourceDir -Filter "*.jpg" -Recurse | Sort-Object -Property CreationTime

# 初始化编号计数器
$fileCounter = 1

foreach ($file in $jpgFiles) {
    # 生成新文件名,{0:D3}表示3位数字编号(不足补0),可改成D4用4位
    $newFileName = "IMG_{0:D3}.jpg" -f $fileCounter
    $fullTargetPath = Join-Path -Path $targetDir -ChildPath $newFileName

    # 执行复制操作,-Force参数会覆盖同名文件(如果需要的话)
    Copy-Item -Path $file.FullName -Destination $fullTargetPath -Force

    # 可选:输出进度日志,方便查看处理情况
    Write-Host "已处理:$($file.Name) → $newFileName"

    $fileCounter++
}

Write-Host "所有JPG文件复制重命名完成!共处理了$($fileCounter - 1)个文件"

可自定义的点:

  • 路径修改:把$sourceDir和$targetDir替换成你实际的文件夹路径
  • 排序规则:如果不想按创建时间排序,可改成Sort-Object -Property Name按原文件名排序,或者Sort-Object -Property LastWriteTime按修改时间排序
  • 命名格式:比如想改成带日期前缀的,可把$newFileName改成"$(Get-Date -Format 'yyyyMMdd')_{0:D3}.jpg" -f $fileCounter,或者自定义前缀如"Vacation_{0:D3}.jpg"

场景2:在原目录复制并重命名,给文件加前缀/后缀

如果你的需求是在原文件所在的文件夹里复制一份,同时给文件名加前缀或后缀(比如原文件photo.jpg变成backup_photo.jpg或photo_2024.jpg),用这个脚本:

# 替换成你要处理的文件夹路径
$workingDir = "C:\Your\Target\Folder"

# 获取该目录下的所有JPG文件(如果要包含子文件夹,加上-Recurse参数)
$jpgFiles = Get-ChildItem -Path $workingDir -Filter "*.jpg"

foreach ($file in $jpgFiles) {
    # 这里是给文件名加前缀"backup_",如果要加后缀可以改成:
    # $newFileName = "$($file.BaseName)_backup$($file.Extension)"
    $newFileName = "backup_$($file.Name)"
    $fullTargetPath = Join-Path -Path $workingDir -ChildPath $newFileName

    # 执行复制操作,要是想移动文件而不是复制,把Copy-Item改成Move-Item即可
    Copy-Item -Path $file.FullName -Destination $fullTargetPath -Force

    Write-Host "已处理:$($file.Name) → $newFileName"
}

Write-Host "操作完成!"

小提示:

  • 如果需要移动文件(而不是复制),直接把脚本里的Copy-Item替换成Move-Item就行
  • 要是担心同名文件被覆盖,可以去掉-Force参数,这样遇到同名文件时脚本会停止并提示

如果你的需求是其他特殊规则(比如根据照片的拍摄日期命名、按原文件夹结构映射重命名),可以把具体的原文件结构和目标效果告诉我,我再帮你调整脚本!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:01:14