gpt4 book ai didi

powershell - 组名称中包含相同值的文件

转载 作者:行者123 更新时间:2023-12-02 23:41:31 34 4
gpt4 key购买 nike

$ src中有数百个文件,其命名约定如下:

  • prefix_123456_ 012016 999.txt
  • 前缀0_123456_ 012016 999.txt
  • prefix1_123456_ 012016 999.txt
  • prefix_123456_ 022016 999.txt
  • 前缀0_123456_ 022016 999.txt
  • prefix1_123456_ 022016 999.txt

  • 等...

    我正在尝试对名称中具有相同值的文件进行分组,并将它们通过管道传送到每个组的单个.zip归档文件中。到目前为止,我设法显示了我的正则表达式模式匹配的所有文件。但是现在我不知道如何仅精确定位正则表达式值相同的那些。

    从SO和其他来源收集信息之后,我现在在这里:
    $src = "D:\05_Tools\powershell_scripts\testbin\"
    $tgt = "D:\05_Tools\powershell_scripts\testbin\output"
    $filter = [regex] "_(\d*)999"

    $allfiles = Get-ChildItem $src | Where-Object { $_.Name -match $filter } | Copy-Item -Destination $tgt

    (副本cmdlet仅用于测试目的,将由compress代替)作为初学者,如果您能向正确的方向提供提示,我将不胜感激。

    最佳答案

    如果您使用的是Powershell版本5,则可以执行以下操作:

    Get-ChildItem *.txt | % {
    $zip = ($_.Name -replace '^[^_]+_\d+_(\d{6}).+$', '$1') + '.zip'
    Compress-Archive $_.FullName $zip -Update
    }

    这仅使用正则表达式来获取将创建zip文件名的文件名部分。关键是 -Update参数,如果不存在则将创建zip,如果存在则向其添加文件。

    如果您没有Powershell版本5,则只需安装命令行zip实用程序,例如7-zip。然后,您可以使用对zip实用程序的调用来替换 Compress-Archive。您必须引用它的文档来进行类似的更新(可以称为附加)。

    关于powershell - 组名称中包含相同值的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41087896/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com