将powershell的操作记录到文件中



我实际上正在做一个脚本,将文件夹/文件名中的每个"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
}

最新更新