返回列表 发帖

[问题求助] 求高手完善一下powershell谷歌翻译的代码

本帖最后由 5i365 于 2022-1-18 11:00 编辑

前两天尝试使用curl调用百度翻译一直报错没成功, 刚刚国外找到一个批处理, 尝试了一下, 居然成功了, 下面代码运行后, 在生成的g_output.log文件中能看到结果

批处理的主体是powershell代码, 但是它没有直接输出翻译结果, 而是生成到两个文件中了, 求高手优化完善一下, 非常感谢
下面这个q关键字应该是请求的文本,但是有好多%%, 我直接把hello改成别的, 也不行, 不明白为什么,求指点
q=%%E2%%80%%9Chello%%E2%%80%%9D
@REM https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=ja&dt=t&q=%E2%80%9Chello%E2%80%9D
@set scriptfolder=%~dp0%
@set script=%~n0
@REM activate utf8 encoding in batch script
@chcp 65001
set retval=
Call :CallUrlPS
@echo retval=%retval%
@echo %retval% > %scriptfolder%%script%_output.log
@GOTO :END
@REM ==================================
:CallUrlPS
@SET retval=
@set cmd=^
  $data = @('',''); ^
  $objRet=Invoke-WebRequest 'https://translate.googleapis.com/translate_a/single?client=gtx^&sl=en^&tl=zh-CN^&dt=t^&q=%%E2%%80%%9Chello%%E2%%80%%9D'; ^
  $data[0]=$objRet.Content; ^
  $data[1]=$objRet.StatusCode; ^
  $data[0]=$data[0].Trim(); ^
  Set-Content -Path '%scriptfolder%%script%_outputPS.log' -Encoding utf8 -Value $data[0]; ^
  $objJson = ConvertFrom-Json $data[0]; ^
  Write-Host $objJson[0][0][0]; ^
  ;
@SET setarg=powershell -NoLogo -Noninteractive -InputFormat none -Command "%cmd%"
@FOR /F "tokens=*" %%a IN ('%setarg%') DO @SET retval=%%a
@GOTO :EOF
:END
pauseCOPY

没翻到,有空请发一下

TOP

回复 9# vegeta2000


我也是刚学powershell, 综合难度的,目前还不搞定, 你可以把你的需求详细描述一下, 新开个贴子, 应该有大侠支招的,
我有个贴子好像是用这个翻译文本文件的,idwma大侠帮忙搞的, 你可以在我的贴子中找找看
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复  vegeta2000

把hello world改为你要翻译的英文, 执行后就能出中文
5i365 发表于 2022-3-31 16:14



    大佬,您自己改写的这个是在powershell运行,然后翻译结果也是在powershell显示,能否做到读取Excel之类的文档翻译再导出呢?

TOP

回复 7# vegeta2000

把hello world改为你要翻译的英文, 执行后就能出中文
$data = @('', '')
$objRet = Invoke-WebRequest 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q=hello world'
$data[0] = $objRet.Content
$data[1] = $objRet.StatusCode
$data[0] = $data[0].Trim()
$objJson = ConvertFrom-Json $data[0]
Write-Host $objJson[0][0][0]COPY
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复  vegeta2000


   3楼代码刚测试, 还能完美输出
5i365 发表于 2022-3-31 11:04



    大佬,能否请你发一下修改后完整版的,谢谢!

TOP

回复 5# vegeta2000


   3楼代码刚测试, 还能完美输出
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 3# 5i365


   
    大佬,请问您这个需要谷歌API吗?这一段是替换哪里的,为什么我的output.log里面显示ECHO is on.

TOP

来学习学习

TOP

自己改好了, 可以成功输出! 感谢比百度的强多了, 又要注册, 又要密码! 太麻烦了
$data = @('', '')
$objRet = Invoke-WebRequest 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q=hello world'
$data[0] = $objRet.Content
$data[1] = $objRet.StatusCode
$data[0] = $data[0].Trim()
$objJson = ConvertFrom-Json $data[0]
Write-Host $objJson[0][0][0]COPY

TOP

q=%%E2%%80%%9Chello%%E2%%80%%9D 这个问题搞定了
我把它修改为 q=hello world
可以成功输出 你好世界

TOP

返回列表