从.txt文件中提取数据并将其导出到.csv文件#powershell

时间:2017-03-23 23:30:31

标签: powershell

我是Powershell的初学者,我需要一些帮助。提前致谢

要求:

  1. 使用Folderbrowser浏览文件夹中的文件。
  2. 获取不同.txt文件中的数据。
  3. 将其粘贴到.csv表的单张表中。

    Add-Type -AssemblyName System.Windows.Forms
    $FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
    [void]$FolderBrowser.ShowDialog()
    $Selection = $FolderBrowser.SelectedPath
    
    $input = Get-ChildItem $Selection
    
    $objects = ForEach($record in $data) 
    {
        $props = @{}
        foreach($input in $Selection)
        {
            $records +=Get-Content $data
            $props.Add($records)
        }
    }
    
    $AllFilesData =  New-Object -TypeName PSObject -Property $props
    
    $path = $Selection+"\"+"AllFilesTogether.csv"
    $objects | Select-Object AllFilesData| Export-Csv -NoTypeInformation -Path $path
    
  4. 错误:

      

    获取内容:无法找到路径   ' d:\用户\ F14897c \ sd_conex_france_20170107002029.txt'因为它确实如此   不存在。   在行:14 char:15   + $记录+ =获取内容$数据   + ~~~~~~~~~~~~~~~~~       + CategoryInfo:ObjectNotFound:(D:\ users \ F14897 ... 70107002029.txt:String)[Get-Content],   ItemNotFoundException       + FullyQualifiedErrorId:PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand不能   找到"添加"和参数计数:" 1"。

         

    在第16行   焦炭:9   + $ props.Add($记录)   + ~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:NotSpecified:(:) [],MethodException       + FullyQualifiedErrorId:MethodCountCouldNotFindBest

2 个答案:

答案 0 :(得分:1)

你显然没有给出整个代码,因为ForEach循环中的$ data永远不会被定义。无论如何,您收到错误的原因是您需要更改:

$records +=Get-Content $data

$records +=Get-Content $data.FullName

假设$ data是Get-ChildItem的结果。

此外,您正在尝试添加一个带有1个参数的哈希表,该参数也不会飞。您需要提供一个键值对。如果您只打算使用一列,则使用@()而不是Hash表声明一个数组。

答案 1 :(得分:1)

单列CSV文件只是一个字符串列表,因此可以极大地简化您的脚本:

Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$Selection = $FolderBrowser.SelectedPath

Get-ChildItem $Selection -Filter *.txt |Get-Content |Out-File (Join-Path $Selection AllFilesTogether.csv)