我实际上正在做一个脚本,将文件夹/文件名中的每个"o"替换为"0"
这是我的简单脚本:
Get-ChildItem -recurse |`
Where-Object { $_.name -match 'o' } |`
Rename-Item -NewName { $_name -replace 'o', '0' }
它正在工作,但现在我想登录到每个文件/文件夹都已更改的文件中。因此,基本上我想添加一个函数,在重命名前后写入文件名。
例如,对于"BEFORE名称",我尝试在Where Object管道之后添加此命令:
Add-content $MylogFile
它成功地记录了每个内部有"o"但没有路径的文件。而拥有1000多个没有路径的文件的日志是无用的。。。
你有没有想过简单地记录每个被脚本重命名的文件的前/后名称及其路径?
提前感谢!问候,
您只需要将原始搜索存储到一个变量中,然后对其进行迭代
如果只想重命名文件:
$files = Get-ChildItem -recurse | Where-Object { $_.PSIscontainer -eq $false -and $_.name -match 'o' }
$files | % {
$newname = $_.name -replace 'o', '0'
write-host "Before: $($_.fullname)"
write-host "After: $newname"
$_ | Rename-Item -NewName $newname
}
重命名文件和文件夹:
$files = Get-ChildItem -recurse | Where-Object { $_.PSIscontainer -eq $false -and $_.name -match 'o' }
$files | % {
$newname = $_.name -replace 'o', '0'
write-host "Before: $($_.fullname)"
write-host "After: $newname"
$_ | Rename-Item -NewName $newname
}
$dirs = Get-ChildItem -recurse | Where-Object { $_.PSIscontainer -eq $true -and $_.name -match 'o' }
$dirs | % {
$newname = $_.name -replace 'o', '0'
write-host "Dir Before: $($_.fullname)"
write-host "Dir After: $newname"
$_ | Rename-Item -NewName $newname
}