【问题标题】:How can one assign to a variable a string from the clipboard and using that string to search Google?如何将剪贴板中的字符串分配给变量并使用该字符串搜索 Google?
【发布时间】:2017-09-15 16:54:58
【问题描述】:

在这个question,答案是

@echo off start "" chrome.exe www.google.com#q=batch

#q= 在这里做什么?我是批处理脚本的新手,我试图从剪贴板传入一个字符串来代替上面的“批处理”一词。

我尝试将powershell -sta "add-type -as System.Windows.Forms; [windows.forms.clipboard]::GetText()" 分配给一个变量,并尝试将变量传递到第一个脚本中以代替“批处理”。

【问题讨论】:

  • https://www.google.com/search?q=batch 或上述www.google.com#q=batch,将使用搜索词batch 进行Google 搜索。由于这是您上面唯一的问题,而且不是编程问题,因此与本网站无关。
  • 我已将 powershell 标签添加到您的问题中,因为您提到了它,显示了它的代码,虽然 cmd.exe 可以发送到剪贴板,但它没有本地方法可以从中检索。

标签: powershell batch-file search clipboard


【解决方案1】:

Google 搜索网址是 google.com/search?q=。只需将剪贴板的内容添加到其中并将其附加到浏览器调用中。至少 chrome.exeiexplore.exe 允许 URL 作为未命名参数。

$SearchTearm = [System.Windows.Forms.Clipboard]::GetText()
$GoogleSearch = "https://www.google.com/search?q=$SearchTerm"
$Browser = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
Start-Process $Browser -ArgumentList $GoogleSearch

从 PowerShell 5 开始,您可以使用 Get-Clipboard 代替 .NET 函数。

【讨论】:

  • 可能没有必要,但根据剪贴板内容,我会插入[System.Net.WebUtility]::UrlEncode()
  • 编辑:抱歉,刚刚意识到,我应该在 powershell 中运行它,而不是 cmd。 我收到一个错误:'$SearchTearm' 不被识别为内部或外部命令、可运行的程序或批处理文件。 '$GoogleSearch'、'$Browser'、'Start-Process' 也是如此......
  • 恐怕这不适用于多个字符串。
  • 参考 LotPings 评论对搜索词的空格进行编码
【解决方案2】:

不需要使用完整路径导航器。总有命令保存。

精简版(至少在 PowerShell 5 中):

对于 Chrome:

Start-Process "chrome" -ArgumentList "https://www.google.com/search?q=$(Get-Clipboard)"

对于 Internet Explorer:

Start-Process "iexplore" -ArgumentList "https://www.google.com/search?q=$(Get-Clipboard)"

对于边缘:

Start-Process "microsoft-edge:https://www.google.com/search?q=$(Get-Clipboard)"

【讨论】:

  • 由于 Get-Clipboard 是一个 Pscx cmdlet,您不能假定它存在。
  • Get-clipboard 包含在 PowerShell 中,就像我解释的 docs.microsoft.com/en-us/powershell/module/…
  • 感谢反馈,奇怪的是我的 PSVersion 是 5.1.15063.608gcm Get-Clipboard 告诉我来源是 pscx 版本 3.2.0.0
  • 奇怪,我的 PowerShell 版本是一样的,但是 gcm Get-Clipboard 给了我一个源 Microsoft.PowerShell.Management 和 3.1.0.0 之类的版本
  • 可以参考内部Get-Clipboard' by fully qualify it like Microsoft.PowerShell.Management\Get-Clipboard`。如果两个命令同名,则首选自定义函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2019-12-05
  • 2019-02-08
  • 1970-01-01
  • 2020-10-08
  • 2019-08-19
相关资源
最近更新 更多