需求:给定文件名列表 list.txt,每行一个;给定源文件 source.jpg。现在需要把 source.jpg 批量复制为 <filename_in_list.txt>.jpg。
脚本
下述脚本保存为 copy.ps1,执行 .\copy.ps1。
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
$sourceFile = Join-Path $scriptPath "source.jpg"
$listFile = Join-Path $scriptPath "list.txt"
if (-not (Test-Path $sourceFile)) {
Write-Host "Error: Can't find source.jpg"
exit 1
}
if (-not (Test-Path $listFile)) {
Write-Host "Error: Can't find list.txt"
exit 1
}
$fileNames = Get-Content $listFile
foreach ($name in $fileNames) {
$name = $name.Trim()
if ([string]::IsNullOrEmpty($name)) {
continue
}
$destFile = Join-Path $scriptPath "$name.jpg"
try {
Copy-Item -Path $sourceFile -Destination $destFile -ErrorAction Stop
Write-Host "Created: $name.jpg"
} catch {
Write-Host "Error: Creating $name.jpg - $_"
}
}
Write-Host "Done"