因此,在我目前的情况下,我将.csv文件移动到我想要执行脚本来解析.csv,删除特定数据以及仅使用提取的数据创建新文件的位置。
我的代码很好,一切正常。
但是现在我在使用生产中的数据文件时正在运行另一组UAT。这些.csv文件每天都会发送给我们,并加盖日期戳。
我最初使用text.csv编写了我的脚本,并希望按计划自动执行此脚本。但是现在我需要每次都定义csv文件吗?这是不可行的。
是否可以使用import-csv cmdlet让它只加载它在文件夹中看到的csv文件?
这是我的代码
Import-Csv "\\pg-app05\Micros\Scripted Data Extraction\Sales\" |Where
{$_.SITEID -like "7*"} | Select
SITEID,DATE,REVENUECENTER,OVERGROUP,UNITS,PRICE,NETT,VATRATE,VAT,GROSS |
ConvertTo-CSV -NoTypeInformation | % {$_ -replace '"',""} |Out-File "\\pg-
app05\Micros\Scripted Data Extraction\Sales\sales_$(get-date -f
yyyy_MM_dd)_NI.csv" -fo -en ascii
即使文件夹中只有一个CSV文件,也会返回错误。 SALES_27062017_090019.csv
这里应该只有一个文件存在,所以想知道是否可以使用powershell只加载csv文件,而不管文件名定义是什么?
我已经尝试了
Import-Csv "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv"
虽然它给了我一个生成的输出文件,但它没有任何内容。
答案 0 :(得分:2)
我认为你可以做到:
(Get-ChildItem "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv").FullName | Import-Csv
因为Get-ChildItem
接受其-Path
参数的通配符参数。
您的尝试:
Import-Csv "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv"
不起作用,因为-Path
的{{1}}参数不接受通配符。
如果您想确保只返回1张CSV,则可以执行以下操作:
Import-CSV
答案 1 :(得分:2)
Import-CSV
可以处理从多个CSV导入,但没有任何通配符处理。因此,您需要生成CSV列表 - 其中可能只包含一个CSV - 其他方式:
Import-CSV ((Get-ChildItem -Path "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv").FullName)
应该有效,@ MarkWragg提出的解决方案
答案 2 :(得分:0)
感谢各位回复,感谢您的帮助。
所以这是我最终的切入,实现了我想要的目标
(Get-ChildItem "\\pg-app05\Micros\Scripted Data
Extraction\Sales\*.csv").FullName | Import-Csv |Where {$_.SITEID -like "7*"}
| Select
SITEID,DATE,REVENUECENTER,OVERGROUP,UNITS,PRICE,NETT,VATRATE,VAT,GROSS |
ConvertTo-CSV -NoTypeInformation | % {$_ -replace '"',""} |Out-File "\\pg-
app05\Micros\Scripted Data Extraction\Sales\sales_$(get-date -f
yyyy_MM_dd)_NI.csv" -fo -en ascii
我现在正在获取一个生成的outfile,其中包含我需要的解析数据。随着更多的测试!