2017-08-30 48 views
1


我需要將PowerShell變量的內容輸出到剪貼板,保留除最後一行外的所有換行符。
此刻,我只是將變量讀數的輸出傳遞給clip.exe,但是會產生一個尾隨的換行符。Powershell輸出到剪貼板沒有拖尾換行符?

$Text = "line1`nline2" 
$Text | clip.exe 

給出如下:

"line1, 
line2 
" 

我會把它想輸出

"line1, 
line2" 

我會如何實現這一目標?

+0

嘗試'設置Clipboard'。 –

+0

謝謝Jeroen,這似乎工作,但它提出了一個新問題;我無法再確定複製的文本將帶有哪些字符集(我需要它在ISO-8859-2中),因爲之前用來確定複製字符集的chcp不適用於設置剪貼板功能。 任何想法如何解決這個問題? – totalolage

+0

這是一個奇怪的具體請求。剪貼板可以根據需要轉換數據。我假設(有危險的假設)PowerShell將文本設置爲Unicode,並且我很難想象爲什麼應用程序無法使用它,而不管它首選哪種格式。如果我(比如說)從記事本複製數據,它肯定不會以ISO-8859-2結尾 - 你是說你要複製數據的任何東西無法處理記事本中的文本? –

回答

2

使用管道可能會導致由PowerShell添加新行。您可以使用Set-Clipboard,它應該避免換行問題。

您還可以使用.NET選項以及:

[System.Windows.Forms.Clipboard]::SetText("line1`r`nline2") 
+1

querent沒有指定他使用的PowerShell版本,並且「Set-Clipboard」在所有版本中都不可用。我從PS2到PS5的所有內容都使用了.NET技術,甚至將它們封裝到腳本cmdlet /高級功能中。 –

+0

我正在使用v.5,對不起,我不得不查看它。我昨天才開始使用它,所以我不太熟悉版本的差異,或者提及我正在使用的版本有多重要。 – totalolage

+0

設置剪貼板將爲你工作。 .NET方法將在版本2及更高版本中運行。 –