我是Powershell的初学者,我需要一些帮助。提前致谢
要求:
将其粘贴到.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
错误:
获取内容:无法找到路径 ' 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
答案 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)