【问题标题】:Replace Partial File Name in Powershell替换 Powershell 中的部分文件名
【发布时间】:2016-11-02 08:39:45
【问题描述】:

我一直在努力重命名 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 ","") 
}

非常感谢您对我的错误的帮助和指点!

【问题讨论】:

    标签: powershell for-loop replace rename


    【解决方案1】:

    我将扩展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 ')
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 2022-10-04
      • 1970-01-01
      相关资源
      最近更新 更多