【发布时间】:2020-11-14 11:38:28
【问题描述】:
我是 PowerShell 的新手,并且编写了以下脚本,使用 ISE,尝试重命名同一目录中的一堆文件夹,这些文件夹的日期格式严格为 20201130 到 2020-11 -30(只需添加破折号) 脚本有点工作,但我有 3 个问题。
1- 运行时抛出了一堆与Rename-Item 相关的错误
错误:
Rename-Item : Source and destination path must be different.
At line:13 char:25
+ ... ChildItem | Rename-Item -NewName { $_.Name -replace $file, $MyNewName ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (D:\Google Drive...Term 2\testings:String
) [Rename-Item], IOException
+ FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.Renam
eItemCommand
2- 当我使用名为 (234567890) 的文件夹对其进行测试时,它仍然可以工作,尽管此文件夹的长度不等于 8!
3- 当上述重命名发生时,结果名称是“1234-56-7890”,这很奇怪,因为$MyNewName 应该以 2 个字符结尾! $file.Substring( 6 , 2 )
脚本:
$FileNameArr_All = (Get-ChildItem).Name
$i = 0
foreach($file in $FileNameArr_All){
if ( ($file -match "^\d+$") -and ($file.Length -eq 8) ){
[string] $MyNewName = $file.Substring( 0 , 4 )+"-"+$file.Substring( 4 , 2 )+"-"+$file.Substring( 6 , 2 )
#the actual renamining of the item, where the error is:
Get-ChildItem | Rename-Item -NewName { $_.Name -replace $file, $MyNewName }
$message = "the item " + $file + " has been renamed : " + $MyNewName
Write-Output $message
$i ++
Write-Output $file.Length
}
}
if ($i -eq 0){
Write-Output "No mathcing items found."
}
else{
$message2 = "total of items affected: " + $i
Write-Output $message2
}
我知道这很多,但它是我的第一篇文章,也是我的第一个脚本,我很感激能帮助你解决任何问题。
非常感谢:)
【问题讨论】:
标签: powershell