【问题标题】:Read-Host list of filenames and then export the Input to a csv file读取主机文件名列表,然后将输入导出到 csv 文件
【发布时间】:2021-08-28 00:39:57
【问题描述】:

我正在尝试做一个简单的读取主机并将用户输入导出到一个 csv 文件。

$List = Read-Host -Prompt 'Enter List of files (exclude file extention)'|
Export-Csv "c:\user.csv" -NoTypeInformation

我在文件中得到的只是:

"length"
"42"

我想我需要声明一个自定义对象,但我想要的是:

用户输入:

filename1
filename2

export-csv C:\list.csv 应该有:

filename1
filename2

谢谢!

【问题讨论】:

  • 您的预期输出看起来更像是文本文件而不是 csv。
  • 用户应该如何输入不同的文件名?以什么为界? (逗号、分号、空格?您的预期用途是什么?输入的文件名是否应该存在于某个地方?如果用户输入一个空字符串或类似“blah blah blah”之类的内容怎么办。你可以吗?

标签: powershell export-csv read-host


【解决方案1】:

您提到使用PSCustomObject,那么为什么不使用它呢?

$R_Input = Read-Host -Prompt "Exclude extension! `nEnter File Name" 
$R_Input = $R_Input -split ","

    [PSCustomObject]@{

        "First File Name"  = $R_Input[0]
        "Second File Name" = $R_Input[1]

    } | Export-Csv -Path "c:\user.csv" -NoTypeInformation -Force -Append

<#Input

Exclude extension! 
Enter File Name: Path Number One, Path Number two

#>


<#OutPut

PS C:\WINDOWS\system32> Import-Csv c:\user.csv

First File Name Second File Name
--------------- ----------------
Name Number One  Name Number two

#>

编辑:

如果您不关心文件名在同一列中,您可以使用for 循环遍历所有输入(用逗号分隔),并传递到@987654324 @。现在,他们输入多少名称应该无关紧要了。

$R_Input = Read-Host -Prompt "Exclude extension! `nEnter File Name" 
$R_Input = $R_Input.Trim() -split ","

    for ($i=0; $i -lt $R_Input.Count; $i++) {
        [PSCustomObject]@{

            "File Name"  = $R_Input[$i]

        } | Export-Csv -Path "c:\user.csv" -NoTypeInformation -Force -Append
    } 

【讨论】:

  • 问题是,我不确定用户会输入多少行。
  • 我得到的是空管道元素。
  • 他的代码很好,你复制粘贴错了。我能想象你得到这个错误的唯一方法是如果你在没有传递任何对象的情况下执行| Export-Csv ....。 @Harry123
  • @Santi,感谢您的再次确认!让我以为我输入了错误的东西哈哈
  • 对不起,我让它工作了。 @abraham,我真的很感激!!!!!!
猜你喜欢
  • 1970-01-01
  • 2017-05-17
  • 2022-01-13
  • 1970-01-01
  • 2016-01-09
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多