【问题标题】:Powershell | Import .csv file外壳 |导入 .csv 文件
【发布时间】:2020-11-16 10:54:37
【问题描述】:

我想在 Powershell 中导入 .csv 文件。 CSV中只有一行,结构如下:Text;Text;Text...

这是我之前尝试过的:

$folder_csv = 'C:\Users\Win_User\Desktop\Folder\CSV_Files'
$files = Get-ChildItem $folder_csv -File -Filter *.csv

foreach ($file in $files) {

                    $Split_content = $file.split(";")
    
                    $timestamp = $($Split_content[0])
                    $User = $($Split_content[1])
                    $PC = $($Split_content[2])
                    $Software = $($Split_content[3]).Substring(1)
                    }
Write-Host $timestamp + " " + $User + " " + $PC + " " + $Software

我收到以下错误消息:“方法调用失败,因为 [System.IO.FileInfo] 不包含名为 'split' 的方法”。

有没有更好的方法来保存 csv 文件并将每个值保存在单独的变量中? 感谢您的帮助。

【问题讨论】:

  • 您好,感谢您的评论。我已经尝试过了:不幸的是,当我尝试以下代码时它没有输出任何内容:$Test = Import-Csv 'C:\Users\Win_User\Desktop\CSV-Files\2020-7-23 11-52-14. csv' - 分隔符 ";"写主机 $Test
  • 那你做错了,你应该使用 Import-CSV。这是导入 CSV 文件的正确方法。如果您使用 CSV 的示例行更新您的问题,我可能会给您一个解决方案。
  • 你好。 csv 文件只有 4 个值,如下所示:27.7.2020 08:43:33;User;PC-Name;Software-Name。

标签: powershell csv import-csv


【解决方案1】:

您的示例文件不包含标题,所以我想这是您的问题。然后您需要在导入 CSV 文件时手动指定它。此代码仅适用于当您有一行时,如果您有多行,它只会覆盖变量并保留最后一个。但请随意更改。

$Header = 'timestamp','User','PC','Software'

$data = Import-Csv -Path .\testcsv.csv -Delimiter ';' -Header $Header



foreach ($row in $data) {
   
    $timestamp = $row.timestamp
    $User = $row.User
    $PC = $row.PC
    $Software = $row.Software
}

$timestamp
$User
$PC
$Software

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多