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