powershell - 根据 FileName 将分割 FileName 的一部分写入 doc

标签 powershell split

我需要拆分一些文件名来创建报告(文本文档)。我正在研究这个问题,但我的代码变得非常复杂,我未能开发出一些可以做得更干净的逻辑。

文件命名结构如下所示:

B00D09COGG.MAIN.PC_300_bob.jpg
B00D09COGG.PT01.PC_300_bob.jpg
B00EVI2MPI.MAIN.PC_300_bill.jpg
B01FKFF0OK.BACK.PC_300_bill.jpg
B00GB812OS.MAIN.PC_300_tom.jpg

我想拆分名称并编写第一部分(B00D09COGGB00EVI2MPIB01FKFF0OKB00GB812OS >) 到名为最后一部分的文本文档(bobbilltom)。最终,我需要以每个用户名命名并包含与其关联的唯一 B00 代码的文本文档。

最终结果应该是三个标题为 bobbilltom 的文本文档

bill
----
B00EVI2MPI
B01FKFF0OK

bob
----
B00D09COGG

tom
----
B00GB812OS

到目前为止我所拥有的:

$b = GCI 'E:\Temp_Images'
foreach($c in $b){
$stylist = $c.BaseName.Split("_")[2]
echo $stylist
Out-File E:\Temp_Images\$stylist.txt
}
foreach($d in $b){
$ASIN = $d.BaseName.Split(".")[0]
$ASIN | Where-Object {$_.BaseName -like $stylist} | Write-Output E:\Temp_Images\$stylist.txt 
}

这不起作用,我觉得我采取了错误的方法。

最佳答案

试试这个。使用 Add-Content 附加到文件。

$b = GCI 'E:\Temp_Images'
$items = New-Object 'Collections.Generic.HashSet[Tuple[string,string]]'
foreach($d in $b){
    $stylist = $d.BaseName.Split("_")[2]
    $ASIN = $d.BaseName.Split(".")[0]

    $checkTuple = New-Object 'Tuple[string,string]'($stylist, $ASIN)
    if ( -not $items.Contains($checkTuple))
    {
        Add-Content ("E:\Temp_Images\" + $stylist + ".txt") $ASIN
        $items.Add($checkTuple)
    }     
}

关于powershell - 根据 FileName 将分割 FileName 的一部分写入 doc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570702/

相关文章:

powershell - Powershell选择唯一字段

powershell - Powershell分割一个文件名

c# - 如何从数组填充组合框?

c++ - 从一个句子中逐字打印

c++ - 从字符串中获取键/值对并存储在映射中

powershell - 如何将 C# PowerShell 命令中的值或对象返回到 PowerShell?

PowerShell - 使用 Microsoft 帐户连接到 Azure Active Directory

powershell - 如何设置文件的 LastWriteTime 属性?

java - 按空格而不是包含空格的双引号 (") 拆分 Java String

c - 实现 2D split() 函数