Windows Powershell:在 Select-String 后设置剪贴板给出错误 "Cannot find path 'C:\MyDirectory\InputStream' because it does not exist"
Windows Powershell: Set-Clipboard after Select-String gives error "Cannot find path 'C:\MyDirectory\InputStream' because it does not exist"
我想将 Select-String 命令的输出通过管道传输到剪贴板。我已经尝试使用 <command_with_long_output> <args> | select-string <string_of_interest> | clip
管道连接到 clip.exe
,但这会复制行结尾,以便在我粘贴时尝试执行。
如果我使用 echo hello | set-clipboard
之类的东西,它不会复制新行,所以我可以在不尝试执行的情况下粘贴。
但是如果我尝试组合 set-clipboard
和 select-string
,我会得到一个错误:
PS C:\Users\chickman> echo "hello" | select-string hello | set-clipboard
set-clipboard : Cannot find path 'C:\Users\chickman\InputStream' because it does not exist.
At line:1 char:38
+ echo "hello" | select-string hello | set-clipboard
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Clipboard:String) [Set-Clipboard], ItemNotFoundException
+ FullyQualifiedErrorId : FailedToSetClipboard,Microsoft.PowerShell.Commands.SetClipboardCommand
为什么会发生这种情况,我该如何解决?
*编辑:
我刚试过
echo "hello" | select-string hello | out-string | set-clipboard
这不再给出错误,但我现在回到原点,因为这添加了一个新行,所以当我尝试粘贴它时尝试执行命令!
我在 PS 5.1.
上测试过它
根据文档,select-string
正在从输入行返回匹配行:这对尾随的换行符没有任何影响。然而,当我 运行
echo "hello" | select-string hello
我有一个
[newline]
hello
[newline]
[newline]
所以我做了一个
echo "hello" | select-string hello | .{process {$_.GetType()}}
这表明,结果不是 string
而是一个 MatchInfo
对象,因此通过显式转换我成功了
echo "hello" | select-string hello | .{process {[string]$_}} | Set-Clipboard
我想将 Select-String 命令的输出通过管道传输到剪贴板。我已经尝试使用 <command_with_long_output> <args> | select-string <string_of_interest> | clip
管道连接到 clip.exe
,但这会复制行结尾,以便在我粘贴时尝试执行。
如果我使用 echo hello | set-clipboard
之类的东西,它不会复制新行,所以我可以在不尝试执行的情况下粘贴。
但是如果我尝试组合 set-clipboard
和 select-string
,我会得到一个错误:
PS C:\Users\chickman> echo "hello" | select-string hello | set-clipboard
set-clipboard : Cannot find path 'C:\Users\chickman\InputStream' because it does not exist.
At line:1 char:38
+ echo "hello" | select-string hello | set-clipboard
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Clipboard:String) [Set-Clipboard], ItemNotFoundException
+ FullyQualifiedErrorId : FailedToSetClipboard,Microsoft.PowerShell.Commands.SetClipboardCommand
为什么会发生这种情况,我该如何解决?
*编辑:
我刚试过
echo "hello" | select-string hello | out-string | set-clipboard
这不再给出错误,但我现在回到原点,因为这添加了一个新行,所以当我尝试粘贴它时尝试执行命令!
我在 PS 5.1.
上测试过它
根据文档,select-string
正在从输入行返回匹配行:这对尾随的换行符没有任何影响。然而,当我 运行
echo "hello" | select-string hello
我有一个
[newline]
hello
[newline]
[newline]
所以我做了一个
echo "hello" | select-string hello | .{process {$_.GetType()}}
这表明,结果不是 string
而是一个 MatchInfo
对象,因此通过显式转换我成功了
echo "hello" | select-string hello | .{process {[string]$_}} | Set-Clipboard