Powershell循环遍历csv并使用其原始名称将它们放入新文件夹中
Powershell to loop over csv's and place them into a new folder using its original name
我写出了下面的 powershell:
$Headers = @(
"Purchase Order"
"SKU"
"Markdown"
"Landed Cost"
"Original Price"
"Current Sale Price"
"Free Stock"
"OPO"
"ID Style"
"Supplier Style No")
$Location = "\dc1\shared\BI\HisRms"
$Destination = "C:\Users\jonathon.kindred\Desktop\RMM\"
$files = Get-ChildItem $location -Recurse -Filter "*.csv"
Foreach ($file in $files) { Select $Headers | Export-Csv Join-Path "C:\Users\jonathon.kindred\Desktop\RMM\" $_.FullName -Force -NoTypeInformation}
我遇到的问题是所有文件都失败了,因为我没有硬编码文件路径以在末尾包含 .csv。它是怎么做到的,所以我加入路径 $Destination 和原始文件名?
在您的 foreach
循环中,您可以使用以下内容:
Export-Csv -Path (Join-Path $Destination $file.Name) -NoType
Get-ChildItem returns FileInfo
查询文件时的对象。 $files
包含您代码中的那些对象。每个对象都包含属性 FullName
、BaseName
和 Name
。 FullName
包含文件名、文件路径和扩展名。 BaseName
包含没有路径和扩展名的文件名。 Name
包含带扩展名的文件名,但不包括路径。
我写出了下面的 powershell:
$Headers = @(
"Purchase Order"
"SKU"
"Markdown"
"Landed Cost"
"Original Price"
"Current Sale Price"
"Free Stock"
"OPO"
"ID Style"
"Supplier Style No")
$Location = "\dc1\shared\BI\HisRms"
$Destination = "C:\Users\jonathon.kindred\Desktop\RMM\"
$files = Get-ChildItem $location -Recurse -Filter "*.csv"
Foreach ($file in $files) { Select $Headers | Export-Csv Join-Path "C:\Users\jonathon.kindred\Desktop\RMM\" $_.FullName -Force -NoTypeInformation}
我遇到的问题是所有文件都失败了,因为我没有硬编码文件路径以在末尾包含 .csv。它是怎么做到的,所以我加入路径 $Destination 和原始文件名?
在您的 foreach
循环中,您可以使用以下内容:
Export-Csv -Path (Join-Path $Destination $file.Name) -NoType
Get-ChildItem returns FileInfo
查询文件时的对象。 $files
包含您代码中的那些对象。每个对象都包含属性 FullName
、BaseName
和 Name
。 FullName
包含文件名、文件路径和扩展名。 BaseName
包含没有路径和扩展名的文件名。 Name
包含带扩展名的文件名,但不包括路径。