字符串连接与换行符不按预期工作

时间:2017-03-16 19:34:04

标签: powershell

我想添加换行符而不添加整个'nother行来执行此操作,这是我的代码:

"-- MANIFEST COUNT -- " >> "C:\psTest\test1.txt"
$manCount = (Get-ChildItem -filter "*manifest.csv").Count 
$manCount + " `n" >> "C:\psTest\test1.txt"

我认为+ " `n"会对计数进行换行,但它没有做任何事情。我也试过+ "`r`n"(我在SO的其他地方发现了这个建议),但无济于事。

2 个答案:

答案 0 :(得分:2)

让我补充一下your own solution的解释:

因为$manCount,LHS属于[int]

$manCount + " `n"

实际上与:

相同
$manCount + [int] " `n".Trim()

或:

$manCount + [int] ""

实际上与:

相同
$manCount + 0

因此是无操作。

在PowerShell中,表达式的LHS类型通常为 [1]  如有必要,确定RHS将被强制使用的类型。

因此,通过将$manCount投射到[string]+然后按照您的意图执行字符串连接。

正如Matt在您对答案的评论中指出的那样,您还可以使用字符串插值

"$manCount `n"

[1]有例外;例如,'3' - '1'产生[int] 2;即,PowerShell将两个操作数视为数字,因为运算符-字符串上下文中没有意义。

答案 1 :(得分:1)

整数需要转换为字符串才能进行连接:

"-- MANIFEST COUNT -- " >> "C:\psTest\test1.txt"
$manCount = (Get-ChildItem -filter "*manifest.csv").Count 
[string]$manCount + "`r`n" >> "C:\psTest\test1.txt"