我遇到了Powershell的问题。我需要导入一个csv文件,格式化并导出它。
现在其中一个字段在每一行都是相同的值,因此我想将导出文件命名为与单元格值相同。
我用
导入csv Import-Csv c:\tmp\200114.csv
使用
格式化输出 Select-Object @{expression={$_.code}; label='ID NUMBER'} etc etc but one of the fields being DESCRIPTION
然后导出:
Export-Csv -NoTypeInformation c:\tmp\test1.csv
所以基本上我想把文件命名为如下所示,其中DESCRIPTION是字段名称,行是1(因为它们都是相同的):
Export-Csv -NoTypeInformation c:\tmp\@{expression={$_.DESCRIPTION[1]};}.csv
但我得到:
Export-Csv:无法验证参数'Delimiter'的参数。参数为null。提供非null参数和tr 再一次命令。
理想情况下,我希望文件名为:
今日日期 - 描述列ROW 1 Value.csv
ID IDBER,NAME,ADDRESS 1,ADDRESS 2,CITY,STATE,ZIP,Spare,PHONE#,DESCRIPTION,Spare,Spare,VALUE 1,姓名1,地址1,地址2,城市1,州1,邮编1 ,,电话1,CC098-1 ,,, NCV 2,姓名2,地址2,地址3,城市2,州2,邮编2,电话2,CC098-1 ,,, NCV
谢谢,我非常感谢。我正在努力让这个工作。它必须与:
Select @{n='ID NUMBER';e={$_.code}}, @{n='DESCRIPTION';e={...}}
我不知道Select命令并且找不到任何内容,我甚至看不出n =& e =等正在做。我把它修剪成:
$csv = Import-Csv c:\tmp\200114.csv | Select-Object @{expression={$_.code}; label='ID NUMBER'} | $filename = "$(Get-Date -f 'yyyy-MM-dd') - $($csv[0].DESCRIPTION).csv" | $csv | Export-Csv $filename -NoTypeInformation
但我只是得到错误:
表达式仅允许作为管道的第一个元素。 在行:1字符:108
+ $csv = Import-Csv c:\tmp\200114.csv | Select-Object @{expression={$_.code}; label='ID NUMBER'} | $filename <<<< = "$
(Get-Date -f 'yyyy-MM-dd') - $($csv[0].DESCRIPTION).csv" | $csv | Export-Csv $filename -NoTypeInformation
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline
再次感谢。
答案 0 :(得分:0)
在变量中捕获已处理的CSV:
$csv = Import-Csv c:\tmp\200114.csv | Select @{n='ID NUMBER';e={$_.code}},
@{n='DESCRIPTION';e={...}},
...
构建您的文件名:
$filename = "$(Get-Date -f 'yyyy-MM-dd') - $($csv[0].DESCRIPTION).csv"
然后导出数据:
$csv | Export-Csv $filename -NoTypeInformation