【Windows 批处理】获取剪贴板内容并打开浏览器翻译

Windows 批处理获取剪贴板内容并打开浏览器翻译

之前一直在用Utools,觉得它的翻译功能非常方便。更新2.0版本之后总感觉这软件变味了,翻译功能也一直做的不尽人意,再加上其他插件也相继摆烂,所以索性转战Microsoft的PowerToys,功能还算非常强大,但是不能像uTools或者wox那样安装自定义的插件,Everything插件是有大佬整了,但是别的插件还是无人问津。

于是我有了以下尝试:
【下载链接】剪贴板google翻译.exe

在powertoys的执行效果:
在这里插入图片描述

需要可以直接自取,我具体的实现也在下面讲述了,有空的朋友且听我娓娓道来~

使用批处理程序(.bat文件)用浏览器打开固定的页面

set input=%1
start microsoftedge "https://translate.google.cn/?sl=auto&tl=en&text=%input%"

对,这样可以直接打开谷歌翻译页面并翻译我想要的内容,但是谷歌只支持识别输入语言,输出语言需要在URL定义好。

判断中英文

废话不多说,直接上代码:

echo %input%|findstr /b "[a-zA-Z]">nul && goto letters || goto not-letters
:letters
rem ============== EnglishToChinese ==============
start microsoftedge "https://translate.google.cn/?sl=auto&tl=zh-CN&text=%input%"
goto :eof

:not-letters
rem ============== ChineseToEnglish ==============
start microsoftedge "https://translate.google.cn/?sl=auto&tl=en&text=%input%"
goto :eof

这里使用findstr查询input是否包含字母,使用goto跳到指定段落

另外这个input如果是英文那么势必会有很多空格,那对于bat文件来说就是很多个input,也可以直接用set input=%*获取到所有的输入值

英文空格拼接

使用%*获取到的值是没有办法直接传给浏览器的,各位自己去试一试便知,所以这里需要用for对这些字符进行拼接,浏览器的空格是%20,回车是%0A,在bat批处理文件中,%需要加倍来转义,所以有以下代码:

for %%a in (%*) do call :join %%a

:join
set input=%input%%%20%1

至于为什么要用call而不是直接用括号执行拼接,我这里并不清楚为什么我写成下面这样会不成功,希望有懂的大佬给在下留个言~

:: 拼接不了,结果只有最后一个单词
for %%a in (%*) do (set input=%input%%%20%1)

使用剪贴板

powershell Get-Clipboard可以直接获取剪贴板的内容,前提是当前电脑需要安装powershell,获取之后可以用> file.txt存入文件,也可以用for来读取:

for /F "delims=" %%i in ('powershell Get-Clipboard') do echo %%i

这里/f可以将('powershell Get-Clipboard')执行并得到结果,"delims"本意是为了对字符串做分割,这里传空进去就是防止其默认对空格进行分隔,有兴趣的朋友可以试试~

转为exe可执行文件

用BatToExeConverter直接转为exe,还可以设置图标并隐藏控制台
在这里插入图片描述
自己随便命个名,随便找个地方放着,然后相信你的Powertoys肯定能把他找出来的~

代码

最后附上完整代码,这里直接当bat文件执行也可以的,可以判断后面是否有入参,如果有入参就不需要获取剪贴板了。

@echo off
if "%0"=="" (
for %%a in (%*) do call :join %%a
)
if "%input%"=="" call :clip-board

echo %input%|findstr /b "[a-zA-Z]">nul && goto letters || goto not-letters

:letters
rem ============== EnglishToChinese ==============
start microsoftedge "https://translate.google.cn/?sl=auto&tl=zh-CN&text=%input%"
goto :eof

:not-letters
rem ============== ChineseToEnglish ==============
start microsoftedge "https://translate.google.cn/?sl=auto&tl=en&text=%input%"
goto :eof

:clip-board
for /F "delims=" %%i in ('powershell Get-Clipboard') do call :concat %%i
set "input=%input:~3%"
goto :eof

:concat
for %%a in (%*) do call :join %%a
goto :eof

:join
set input=%input%%%20%1
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值