gpt4 book ai didi

powershell - 检测文件夹中丢失的文件名

转载 作者:行者123 更新时间:2023-12-05 00:52:06 25 4
gpt4 key购买 nike

每天我们都会收到来自许多客户的 zip 文件。文件名由以下内容组成:

data_clientname_timestamp.zip

其中“data”始终是相同的文本,“clientname”可以是任何内容,“timestamp”是文件创建日期。

这些文件始终位于同一目录中。客户名总是事先知道的,所以我知道应该接收哪些文件。

该脚本应执行以下操作:
  • 列出今天收到(创建)的所有文件
  • 如果来自一个或多个客户端的文件丢失,请将“来自客户端的文件..丢失”写入文件
  • 我想在一个变量中列出客户端,以便可以轻松更改这些客户端。

  • 到目前为止我所拥有的:
    $folder='C:\data'
    Get-ChildItem $folder -recurse -include @("*.zip") |
    Where-Object {($_.CreationTime -gt (Get-Date).Date )} | select name | out-file $folder\result.txt

    但是如何检查文件中是否有丢失的文件?

    编辑:
    测试数据:
    $Timestamp = (Get-Date).tostring(“yyyyMMddhhmmss”)
    New-Item c:\Data -type Directory
    New-Item c:\Data\Data_client1_$Timestamp.zip -type file
    New-Item c:\Data\Data_client2_$Timestamp.zip -type file
    New-Item c:\Data\Data_client3_$Timestamp.zip -type file
    New-Item c:\Data\Data_client5_$Timestamp.zip -type file
    New-Item c:\Data\Data_client6_$Timestamp.zip -type file
    New-Item c:\Data\Data_client7_$Timestamp.zip -type file
    exit

    脚本:
    $folder='C:\Data'
    $clients = @("client1", "client2", "client3", "client4", "client5", "client6", "client7")
    $files = Get-ChildItem $folder -recurse -include @("*.zip") |
    Where-Object {($_.CreationTime -gt (Get-Date).Date )}

    $files | Select-Object Name | Out-File $folder\result.txt
    $files | Where-Object { ($_.Name -replace '.+?_([^_]+).*', '$1') -notin $clients} | Out-File $folder\result2.txt

    最佳答案

    首先定义您期望的客户列表:

    $clients = @("client1", "client2")

    然后检索所有 zip 文件并将其保存到变量中:
    $files = Get-ChildItem $folder -recurse -include @("*.zip") | 
    Where-Object {($_.CreationTime -gt (Get-Date).Date )}

    将现有文件导出到您的 result.txt:
    $files | Select-Object Name | Out-File $folder\result.txt

    现在您可以使用 Where-Object 确定每个丢失的客户端带有获取客户端名称的正则表达式的 cmdlet:
    $fileClients = $files | ForEach-Object { ($_.Name -replace '.+?_([^_]+).*', '$1') } 
    Compare-Object $clients $fileClients | select -ExpandProperty InputObject | Out-File $folder\result2.txt

    关于powershell - 检测文件夹中丢失的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43342205/

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