如何编写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
相关产品推荐
相关产品推荐

