我需要拆分一些文件名来创建报告(文本文档)。我正在研究这个问题,但我的代码变得非常复杂,我未能开发出一些可以做得更干净的逻辑。
文件命名结构如下所示:
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
我想拆分名称并编写第一部分(B00D09COGG
、B00EVI2MPI
、B01FKFF0OK
和 B00GB812OS
>) 到名为最后一部分的文本文档(bob
、bill
和 tom
)。最终,我需要以每个用户名命名并包含与其关联的唯一 B00 代码的文本文档。
最终结果应该是三个标题为 bob
、bill
和 tom
的文本文档
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/