无需新行即可在PowerShell中复制到剪贴板

IGR*_*ACH 15 powershell powershell-4.0

有没有办法从去除新行out-clipboardclip使用PowerShell?

我正在使用此代码将当前路径复制到剪贴板:

function cl() {
    (Get-Location).ToString() | clip
}
Run Code Online (Sandbox Code Playgroud)

每次我使用它时,都会在复制的文本中添加一个新行.这很令人沮丧,因为我无法将其粘贴到CLI中,就像我从其他地方复制的文本一样.因为新行会在CLI上自动执行命令.

示例:我进入C:\Users并键入cl,然后我使用Alt+ SPACE+ E+ P传递文本,执行命令,我不能再输入.但是当没有新行传递文本时,没有执行任何操作,我可以继续输入.

BdN*_*504 16

使用Set-Clipboard功能:

(get-location).ToString()|Set-Clipboard
Run Code Online (Sandbox Code Playgroud)

  • 我一直使用它与 Set-Clipboard 别名 'scb' (2认同)

小智 7

Add-Type -Assembly PresentationCore
$clipText = (get-location).ToString() | Out-String -Stream
[Windows.Clipboard]::SetText($clipText)
Run Code Online (Sandbox Code Playgroud)


Ans*_*ers 5

正如@PetSerAl 在评论中指出的那样,当字符串对象通过管道发送时,PowerShell 添加了换行符。的字符串化输出Get-Location没有尾随换行符:

PS C:\> $v = (Get-Location).ToString()
PS C:\> "-$v-"
-C:\-
Run Code Online (Sandbox Code Playgroud)

你可以尝试像这样

PS C:\> $v = (Get-Location).ToString()
PS C:\> "-$v-"
-C:\-
Run Code Online (Sandbox Code Playgroud)

  • @AnsgarWiechers 是 `echo` 在此处添加换行符。创建一行最后没有换行符的文本文件,然后在`CMD`中输入`type test.txt|clip`,看到最后没有换行符。 (2认同)