替换Powershell中的部分文件名

时间:2016-06-30 10:03:59

标签: powershell for-loop replace rename

我一直在努力在PowerShell中重命名文件夹中超过5天的所有文件。

文件名全部读作:

XTYPE  -to-  CoOrd & WBS - 20140313
XTYPE  -to-  CoOrd & WBS - 20140314

等。 偶尔会出现一些轻微的异常现象,例如:

XTYPE  -to-  CoOrd & WBS - 20140316 - do not use
XTYPE  -to-  CoOrd & WBS - 20140314 (AutoSaved)

现在我只想从每个文件中删除“& WBS”(所有文件都以excel格式保存,以便文件存在)

XTYPE  -to-  CoOrd- 20140313
XTYPE  -to-  CoOrd- 20140314
XTYPE  -to-  CoOrd- 20140316 - do not use
XTYPE  -to-  CoOrd- 20140314 (AutoSaved)

现在我的代码到目前为止我相信已经足够了......

$myFolder = '\\iiGlasgow.co.uk\public\Controls\Archived Files\'
ForEach ($File in Get-Childitem $myFolder | Where-Object { $_.LastWriteTime   -lt (get-date).AddDays(-5)})

所以我设置了文件夹并建议PowerShell只处理5天以上的项目。

我无法让它替换部分字符串元素但是...它可能非常简单我只是看不到它。我已经浏览了互联网并尝试了各种各样的迭代,但它没有发生。

所以我认为最接近解决方案的最后元素是......

{
$myFile = $file.name
$myFullFilename = $file.FullName
$myRenamed = $myFile.Replace(" & WBS ","") 
}

完整的脚本是为了方便吗?

$myFolder = '\\iiGlasgow.co.uk\public\Controls\Archived Files\'
ForEach ($File in Get-Childitem $myFolder | Where-Object { $_.LastWriteTime   -lt (get-date).AddDays(-5)})
{
$myFile = $file.name
$myFullFilename = $file.FullName
$myRenamed = $myFile.Replace(" & WBS ","") 
}

我对你的错误的帮助和指示一如既往地受到重视!

1 个答案:

答案 0 :(得分:2)

我会扩展Where-Object cmdlet并过滤包含& WBS的所有基本名称。然后只需使用Rename-item cmdlet重命名该文件:

$myFolder = '\\iiGlasgow.co.uk\public\Controls\Archived Files\'
Get-Childitem $myFolder | 
    Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-5) -and $_.BaseName -Match ' & WBS ' } | 
    Foreach {
        $_ | Rename-Item -NewName ($_.Name -replace ' & WBS ')
    }