MG2*_*016 0 powershell powershell-4.0
此代码运行并从文件夹中提供文件名,但它也会引发错误:
Import-Csv:无法验证参数'Path'的参数.参数为null或空.提供非null或空的参数,然后再次尝试该命令.
不确定是什么问题......
$files = Get-ChildItem "C:\Users\MG\Desktop\ScanFolder\*.csv"
foreach ($item in $files) {
$file_name = $item.name
$check = Import-Csv $_
if ($check) { ...
Run Code Online (Sandbox Code Playgroud)
$_只有在将|数据传输到cmdlet或函数时才会自动填充.
由于您正在使用foreach()循环,因此您应该在括号中引用您声明的本地副本,在您的情况下$item:
foreach($item in $files){
$file_name = $item.name
$check = Import-Csv $item.FullName
# work with $check
}
Run Code Online (Sandbox Code Playgroud)
你也可以管$item到Import-Csv让PowerShell的自动绑定的文件的路径Import-Csv的LiteralPath参数:
foreach($item in $files){
$file_name = $item.name
$check = $item |Import-Csv
# work with $check
}
Run Code Online (Sandbox Code Playgroud)
注意:以下内容解决了此问题的先前修订版:
在PowerShell 4.0中,您可以在结果数组上使用属性枚举,如下所示:
(Get-ChildItem "C:\Users\MG\Desktop\ScanFolder\*.csv").Name
Run Code Online (Sandbox Code Playgroud)
或使用ForEach-Object:
Get-ChildItem "C:\Users\MG\Desktop\ScanFolder\*.csv" |ForEach-Object Name
Run Code Online (Sandbox Code Playgroud)
如果要编写与先前版本兼容的代码,请使用Select-Object:
Get-ChildItem "C:\Users\MG\Desktop\ScanFolder\*.csv" |Select-Object -ExpandProperty Name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |