【问题标题】:Find a file that contains a certain string and rename it but keep extension [duplicate]查找包含某个字符串的文件并将其重命名但保留扩展名[重复]
【发布时间】:2023-03-10 13:54:01
【问题描述】:

我正在尝试查找两个名为:

bitbucket_20181013.bak
bitbucket_20181013-237823-23.tar

我正在尝试使用日期扩展名“20181013”查找这些文件,我想将其重命名为“{todaysDate}_bitbucket_backup.{ext}”

到目前为止,我有以下内容:

$date = [DateTime]::Nw.ToString("yyyyMMdd")
$file = "*$date*"
$name = "$($date)_Bitbucket_Backup"

Get-ChildItem -Path Microsoft.PowerShell.Core\FileSystem::\\KERGRINFS4\Seagate\Bitbucket_Backups\backups |
    Where-Object { $_.Name -like $file } |
    %{ Rename-Item -LiteralPath $_.FullName -NewName "$name + $_.extension" }

但它不起作用,它返回:“20181014_Bitbucket_Backup + bitbucket_20181014.bak.extension”而不是“20181014_Bitbucket_Backup.bak”

【问题讨论】:

  • “但它并没有像我预期的那样工作。” - 什么是出乎意料的,你有什么期望?
  • 抱歉,更新了我的帖子。

标签: powershell scripting rename wildcard


【解决方案1】:

$_.extension 更改为$($_.extension)

"$_.extension"    # Give me string that is $_, then add the literal string .extension to it
"$($_.extension)" # evaluate the expression $_.extension, then give me the results of that as a string.

【讨论】:

    【解决方案2】:

    我不确定我是否理解你,但如果你没看错的话,你想更改包含字符串“20181013”的文件并使用yyyyMMdd 日期格式将其重命名为今天的日期?

    您可以在一个命令中使用String.ReplaceRename-Item 来使代码更具可读性,试试这个:

    $Path = 'Microsoft.PowerShell.Core\FileSystem::\\KERGRINFS4\Seagate\Bitbucket_Backups\backups'
    $OldString = 'bitbucket_20181013'
    $NewString = "{0}_Bitbucket_Backup" -f [datetime]::now.tostring("yyyyMMdd") 
    
    Get-ChildItem $Path | ? {$_.Name -match $OldString} | 
    % {Rename-Item $_.FullName -NewName ($_.Name.Replace($OldString,$NewString)) 
    }
    

    【讨论】:

      【解决方案3】:

      我认为您在定义“新名称”时并不需要嵌入变量。我还建议与别名更加一致。

      ls | where { $_.Name -like $file } | foreach { ren $_.FullName -NewName ($name + $_.extension) }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-22
        • 2021-09-07
        • 2016-09-02
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 2023-03-29
        • 2015-06-18
        相关资源
        最近更新 更多