Board logo

标题: [问题求助] 求高手完善一下powershell谷歌翻译的代码 [打印本页]

作者: 5i365    时间: 2022-1-18 10:21     标题: 求高手完善一下powershell谷歌翻译的代码

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

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

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

作者: 5i365    时间: 2022-1-18 11:02

q=%%E2%%80%%9Chello%%E2%%80%%9D 这个问题搞定了
我把它修改为 q=hello world
可以成功输出 你好世界
作者: 5i365    时间: 2022-1-18 13:43

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

作者: yangdongsong    时间: 2022-1-18 23:01

来学习学习
作者: vegeta2000    时间: 2022-3-31 11:00

回复 3# 5i365


   
    大佬,请问您这个需要谷歌API吗?这一段是替换哪里的,为什么我的output.log里面显示ECHO is on.
作者: 5i365    时间: 2022-3-31 11:04

回复 5# vegeta2000


   3楼代码刚测试, 还能完美输出
作者: vegeta2000    时间: 2022-3-31 15:24

回复  vegeta2000


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



    大佬,能否请你发一下修改后完整版的,谢谢!
作者: 5i365    时间: 2022-3-31 16:14

回复 7# vegeta2000

把hello world改为你要翻译的英文, 执行后就能出中文
  1. $data = @('', '')
  2. $objRet = Invoke-WebRequest 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q=hello world'
  3. $data[0] = $objRet.Content
  4. $data[1] = $objRet.StatusCode
  5. $data[0] = $data[0].Trim()
  6. $objJson = ConvertFrom-Json $data[0]
  7. Write-Host $objJson[0][0][0]
复制代码

作者: vegeta2000    时间: 2022-3-31 20:36

回复  vegeta2000

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



    大佬,您自己改写的这个是在powershell运行,然后翻译结果也是在powershell显示,能否做到读取Excel之类的文档翻译再导出呢?
作者: 5i365    时间: 2022-3-31 21:32

回复 9# vegeta2000


我也是刚学powershell, 综合难度的,目前还不搞定, 你可以把你的需求详细描述一下, 新开个贴子, 应该有大侠支招的,
我有个贴子好像是用这个翻译文本文件的,idwma大侠帮忙搞的, 你可以在我的贴子中找找看
作者: vegeta2000    时间: 2022-3-31 22:38

没翻到,有空请发一下




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2