1

我想制作一个 ps1,它将所有 .csv 放在一个文件夹中,提取 2 列下的所有值(由标题标识),然后为每个只有这两列的文件吐出新的 .csv。

我可以让它在下面的单个文件上工作,但是当我添加通配符时,它说函数不适用于多个文件。我尝试过其他方法,但我没有正式的 CS 背景(所以我下面的“脚本”可能看起来很简陋);我接近了,但到目前为止没有任何工作。

$inputpath = 'C:/Users/AAA/AAA/AAA/AAA/'
$inputfile = 'BBB.csv'
$outputpath = $inputpath
$outputfile = $inputfile.basename + 'edited' + '.csv'

Import-Csv $inputpath$inputfile |
    select COLUMNtitle1, COLUMNtitle2 |
    Export-Csv -Path $outputpath$outputfile -NoTypeInformation

echo
4

1 回答 1

2

由于您不使用Get-ChildItemfor $inputfile,因此没有basename属性。此外,Join-Path在连接路径时使用它更安全,并且更好地避免+连接字符串。

$inputfolder = 'C:\Users\AAA\AAA\AAA\AAA\'
Get-ChildItem $inputfolder -include *.csv | % {
    $outputpath = Join-Path $inputfolder "$($_.basename)edited.csv"
    Import-Csv $_.fullname | select COLUMNtitle1,COLUMNtitle2 | Export-Csv -Path $outputpath -NoTypeInformation
}
于 2017-03-03T17:06:00.533 回答