我有一些代码:
$foo = someFunction
Run Code Online (Sandbox Code Playgroud)
这会输出一条警告消息,我想将其重定向到$ null:
$foo = someFunction > $null
Run Code Online (Sandbox Code Playgroud)
问题在于,当我这样做时,在成功抑制警告消息的同时,它也会产生负面的副作用,即不使用函数的结果填充$ foo.
如何将警告重定向到$ null,但仍然保持$ foo填充?
另外,如何将标准输出和标准错误重定向到null?(在Linux中,它是2>&1.)
我正在尝试遍历哈希表并将每个键的值设置为5,并且Powershell给出错误:
$myHash = @{}
$myHash["a"] = 1
$myHash["b"] = 2
$myHash["c"] = 3
foreach($key in $myHash.keys){
$myHash[$key] = 5
}
Run Code Online (Sandbox Code Playgroud)
通过集合枚举时发生错误:
Collection was modified; enumeration operation may not execute..
At line:1 char:8
+ foreach <<<< ($key in $myHash.keys){
+ CategoryInfo : InvalidOperation: (System.Collecti...tableEnumer
ator:HashtableEnumerator) [], RuntimeException
+ FullyQualifiedErrorId : BadEnumeration
Run Code Online (Sandbox Code Playgroud)
给出了什么以及如何解决?
做以下事情是否有优雅的单行程?
$myMatch = "^abc(.*)"
$foo -match $myMatch
$myVar = $matches[1]
Run Code Online (Sandbox Code Playgroud)
我对$myVar变量感兴趣...
我有:
$report.gettype().name
Object[]
echo $report
Item Average
-- -------
orange 0.294117647058824
orange -0.901960784313726
orange -0.901960784313726
grape 9.91335740072202
grape 0
pear 3.48736462093863
pear -0.0324909747292419
pear -0.0324909747292419
apple 12.1261261261261
apple -0.0045045045045045
Run Code Online (Sandbox Code Playgroud)
我想创建一个变量$ total,(例如哈希表),其中包含每个项目的"Average"列的总和,例如,
echo $total
orange -1.5097
grape 9.913
pear 3.423
apple 12.116
Run Code Online (Sandbox Code Playgroud)
现在我正在考虑循环浏览$报告,但这很难看,而且我正在寻找比下面的起点更优雅的东西(不完整):
$tmpPrev = ""
foreach($r in $report){
$tmp = $r.item
$subtotal = 0
if($tmp <> $tmpPrev){
$subtotal += $r.average
}
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
我有以下CSV文件,我想将它们合并为一个CSV
01.csv
apples,48,12,7
pear,17,16,2
orange,22,6,1
Run Code Online (Sandbox Code Playgroud)
02.csv
apples,51,8,6
grape,87,42,12
pear,22,3,7
Run Code Online (Sandbox Code Playgroud)
03.csv
apples,11,12,13
grape,81,5,8
pear,11,5,6
Run Code Online (Sandbox Code Playgroud)
04.csv
apples,14,12,8
orange,5,7,9
Run Code Online (Sandbox Code Playgroud)
期望的输出:
apples,48,12,7,51,8,6,11,12,13,14,12,8
grape,,,87,42,12,81,5,8,,,
pear,17,16,2,22,3,7,11,5,6,,,
orange,22,6,1,,,,,,5,7,9
Run Code Online (Sandbox Code Playgroud)
谁能提供如何实现这一目标的指导?最好使用Powershell,但如果更容易,可以使用Perl等替代品.
感谢Pantik,您的代码输出接近我想要的:
apples,48,12,7,51,8,6,11,12,13,14,12,8
grape,87,42,12,81,5,8
orange,22,6,1,5,7,9
pear,17,16,2,22,3,7,11,5,6
Run Code Online (Sandbox Code Playgroud)
不幸的是,当CSV条目中没有条目时,我需要"占位符"逗号,例如橙色,22,6,1 ,,,,,, 5,7,9而不是橙色,22,6,1, 5,7,9
更新:我想按文件名的顺序解析这些,例如:
$myFiles = @(gci *.csv) | sort Name
foreach ($file in $myFiles){
Run Code Online (Sandbox Code Playgroud)
关于泰德
我有一个包含7个项目的对象.
$obj.gettype().name
Object[]
$obj.length
7
Run Code Online (Sandbox Code Playgroud)
我想分批循环3.我不想使用模数函数,我实际上希望能够只用该批次中的3个项目创建一个新对象.伪代码:
$j=0
$k=1
for($i=0;$i<$obj.length;$i+=3){
$j=$i+2
$myTmpObj = $obj[$i-$j] # create tmpObj which contains items 1-3, then items 4-6, then 7 etc
echo "Batch $k
foreach($item in $myTmpObj){
echo $item
}
$k++
}
Batch 1
item 1
item 2
item 3
Batch 2
item 4
item 5
item 6
Batch 3
Item 7
Run Code Online (Sandbox Code Playgroud)
问候,特德