我正在构建一个简单的Powershell脚本,该脚本以递归方式循环通过目录,并从特定文件夹中删除了“我的”前缀,但我似乎无法使其正常工作。 我可以列出目录很好,但是Rename-Item没有影响。
任何帮助将不胜感激!
Clear-Host
pushd
$homeDrivesDir = 'E:\test\users'
$reportmode = $false
foreach($homeFolder in (Get-ChildItem -Recurse $homeDrivesDir | Where {$_.psIsContainer -eq $true} | Where-Object {($_.Name.contains("My Documents") -or $_.Name.contains("My Music") -or $_.Name.contains("My Pictures") -or $_.Name.contains("My Videos"))})){
if ($reportMode -eq $true) {
# reportmode is on, don't do anything
Write-Host "Directories To be Renamed" $homeFolder.Name -backgroundcolor red -foregroundcolor white
} else {
# reportmode is off, fix the permissions
Write-Host "Renaming Directories" $homeFolder.Name -foregroundcolor white -backgroundcolor red
try {
Write-Host $homeFolder
Rename-Item $_ -NewName $_.Name.Replace('My ', '')
} catch {
}
} #/if
} #/if
popd
答案 0 :(得分:0)
写主机正确输出文件夹名称$homeFolder
您应该在您的reset-item命令中使用相同的变量,而不要使用$_
Rename-Item $homeFolder -NewName $homeFolder.Name.Replace('My ', '')
但是,仅当您当前的工作目录与要重命名的文件夹的位置相同时,此选项才起作用。否则,使用
Rename-Item $homeFolder.FullName -NewName $homeFolder.Name.Replace('My ', '')