【问题标题】:PS script looking for files in wrong folderPS脚本在错误文件夹中查找文件
【发布时间】:2018-12-17 08:46:24
【问题描述】:

由于某种原因,即使我指定了$inputfolder,我在脚本中收到错误消息,指出它正在寻找[the target file from the $inputfolder],但在脚本所在的文件夹中。我不明白为什么。谢谢。

$inputfolder = 'C:\path\to\file\'
$inputobject = Get-ChildItem $inputfolder
$outputpath = Join-Path $inputfolder 'dundada.csv'

Import-Csv $inputobject | select column1 | Export-Csv -Path $outputpath -NoTypeInformation

这是我得到的错误:

Import-Csv : Could not find file 'C:\path\to\folder\containing\PS\script\Target_File_from_Input_Folder.csv'.

【问题讨论】:

  • 您的 inputfolder 路径和错误消息中显示的路径似乎不同。
  • @dhilmathy 是的,这是我的困惑,我在脚本中硬编码了 @inputfolder 的变量,但错误是因为它正在脚本文件夹中寻找目标文件。我不知道为什么

标签: powershell csv import


【解决方案1】:

问题在于您在此处提供给 cmdlet 的内容:

Import-Csv $inputobject

只有 filename.csv,这意味着 PowerShell 在您当前的文件夹中查找文件。如果要指定文字路径,则必须使用

Import-Csv $inputobject.FullName

这是为什么呢? PowerShell 尝试以某种方式将您提供的值转换为它想要的参数。在这种情况下,它会尝试使用.ToString() 转换为字符串并将其提供给-LiteralPath(因为它是唯一的required parameter)。

【讨论】:

  • 谢谢!我开始头疼了。
【解决方案2】:

我认为 $inputobject = Get-ChildItem $inputfolder 没有获取文件名,而是获取输入文件夹的目录结构。可以试试

$inputobject = Get-ChildItem $inputfolder -Name *.csv

假设输入文件夹中只有一个 csv 文件

【讨论】:

  • 这仍然会失败。他需要 FullName 属性关闭 FileInfo 对象。
  • 它对我有用 :) 这是一个 sn-p PS C:\Users\xxxx\Downloads> $inputobject = Get-ChildItem $inputfolder -Name *.csv PS C:\Users\xxxx\Downloads> **$inputobject** SalesJan2009.csv PS C:\Users\xxxx\Downloads> Import-Csv $inputobject |select Country Country ------- United Kingdom United States United States Australia United States United States
猜你喜欢
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2013-06-26
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
相关资源
最近更新 更多