检测文件夹中缺少的文件名

bRins

每天我们都会收到许多客户的压缩文件。文件名包含以下内容:

data_clientname_timestamp.zip

其中“数据”始终是相同的文本,“客户端名称”可以是任何内容,而“时间戳”是文件创建日期。

文件始终位于同一目录中。客户端名称始终是事先已知的,因此我知道应该接收哪些文件。

该脚本应执行以下操作:

  • 列出今天收到(创建)的所有文件
  • 如果缺少来自一个或多个客户端的文件,请将“来自客户端的文件..丢失”写入文件
  • 我想在变量中列出客户端,以便可以轻松更改它们。

到目前为止,我有:

$folder='C:\data'
Get-ChildItem $folder -recurse -include @("*.zip") | 
    Where-Object {($_.CreationTime -gt (Get-Date).Date )} | select name | out-file $folder\result.txt

但是,如何检查文件中是否缺少文件?

编辑:Testdata:

$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.csv的CSV文件中),然后可以遍历该列表以检查是否为每个客户端找到了文件。例如:

$folder='C:\data'
$Clients = Import-CSV Clients.csv

$Files = Get-ChildItem $folder -recurse -include @("*.zip") | Where-Object {($_.CreationTime -gt (Get-Date).Date )} | select name 

$Clients | ForEach-Object { 
    $Client = $_
    $ClientCheck = $Files | Where-Object {$_ -like $Client}
    If (-not $ClientCheck) { 
        Write-Warning "$Client is missing!"
    }Else{
        Write-Output $ClientCheck
    }
} | out-file $folder\result.txt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

列出与模式匹配的文件夹中的文件名,不包括文件内容

将文件名更改为文件夹名

根据文件名中的特定模式移动文件,同时保留文件夹结构

尝试重命名文件夹中的文件(基于文件名中的字符串)

文件名与文件夹内的文件不匹配

如何根据文件名将文件名排序到文件夹中

递归更改文件夹和子文件夹中的文件名,而无需更改文件路径

从包含与目标文件夹相同文件名的源文件夹中复制文件

文件名来自同一文件夹中的其他文件

将文件夹及其子文件夹中的所有文件名写入CSV文件的脚本

批处理文件,用于获取文件夹中的所有文件名

删除文件夹中的所有文件,列表中的文件名除外

从具有指定文件夹名称的文件夹结构中获取文件名

将文件名插入多个子文件夹中的文件的批处理脚本

Bash:如何在文件夹中打印第n个文件的文件名

如何根据文件名部分将文件分类到子文件夹中?

如何列出文件夹中的文件名

根据文件名中的日期将文件排序到文件夹中?

基于文件名中的单词的子文件夹?

使用所有文件名的列表,输出缺少的文件名(如果文件夹中未包含)(批处理脚本)

雷鸟更改Maildir文件夹中的文件名

将csv文件中的名称与文件夹中的文件名匹配

重命名文件夹中的文件名

附加到文件夹中的文件名

在文件夹中搜索大量特定文件名

给定文件夹中的文件名,找出对应的文件扩展名

如何重命名文件夹中的文件名?

将文件组织到文件夹中,然后根据文件名组织子文件夹

如何从 SharePoint 文件夹中获取文件名