【发布时间】:2014-09-29 21:00:08
【问题描述】:
我有一个简单的 PowerShell 脚本,可以批量重命名文件,我想要一个显示“旧文件名”和“新文件名”的表格输出来显示更改。假设可以完成,我如何在“ForEach-Object”循环内访问/引用新文件名?我可以刷新 $_ 的特定值吗?我不想只使用我的变量 $newname 因为我创建了它,并且由于这应该是显示文件名实际更改的输出,所以我想从系统访问文件的新名称,由脚本。
Write-Host "Old Name `t`t`t`t`t`t New Name"
Write-Host "-------- `t`t`t`t`t`t --------"
$files = Get-ChildItem -Path C:\Users\<user>\Desktop\Config
$files | % ({
if ((!$_.PsIsContainer) -and ($_.Extension -eq '')) {
$oldname = $_.FullName
$newname = "$($_.FullName).cfg"
Rename-Item $oldname $newname
# $_.Name still refers to the old file name without the extension
# How do I immediately access its new name (including extension)?
Write-Host $_.Name `t`t`t`t`t`t $newname
}
})
【问题讨论】:
-
使用
$newname有什么问题?如果Rename-Item没有返回错误,您可以假设它有效并且您选择的新名称是正确的。
标签: powershell foreach rename-item-cmdlet