批处理之家's Archiver

5i365 发表于 2022-1-18 10:21

求高手完善一下powershell谷歌翻译的代码

[i=s] 本帖最后由 5i365 于 2022-1-18 11:00 编辑 [/i]

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

批处理的主体是powershell代码, 但是它没有直接输出翻译结果, 而是生成到两个文件中了, 求高手优化完善一下, 非常感谢
下面这个q关键字应该是请求的文本,但是有好多%%, 我直接把hello改成别的, 也不行, 不明白为什么,求指点
q=%%E2%%80%%9Chello%%E2%%80%%9D[code]@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
pause[/code]

5i365 发表于 2022-1-18 11:02

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

5i365 发表于 2022-1-18 13:43

自己改好了, 可以成功输出! 感谢比百度的强多了, 又要注册, 又要密码! 太麻烦了[code]
$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]
[/code]

yangdongsong 发表于 2022-1-18 23:01

来学习学习

vegeta2000 发表于 2022-3-31 11:00

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=250750&ptid=61370]3#[/url] [i]5i365[/i] [/b]


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

5i365 发表于 2022-3-31 11:04

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=253555&ptid=61370]5#[/url] [i]vegeta2000[/i] [/b]


   3楼代码刚测试, 还能完美输出

vegeta2000 发表于 2022-3-31 15:24

[quote]回复  vegeta2000


   3楼代码刚测试, 还能完美输出
[size=2][color=#999999]5i365 发表于 2022-3-31 11:04[/color] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=253558&ptid=61370][img]http://bbs.bathome.net/images/common/back.gif[/img][/url][/size][/quote]


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

5i365 发表于 2022-3-31 16:14

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=253590&ptid=61370]7#[/url] [i]vegeta2000[/i] [/b]

把hello world改为你要翻译的英文, 执行后就能出中文
  [code]$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][/code]

vegeta2000 发表于 2022-3-31 20:36

[quote]回复  vegeta2000

把hello world改为你要翻译的英文, 执行后就能出中文
[size=2][color=#999999]5i365 发表于 2022-3-31 16:14[/color] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=253594&ptid=61370][img]http://bbs.bathome.net/images/common/back.gif[/img][/url][/size][/quote]


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

5i365 发表于 2022-3-31 21:32

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=253616&ptid=61370]9#[/url] [i]vegeta2000[/i] [/b]


我也是刚学powershell, 综合难度的,目前还不搞定, 你可以把你的需求详细描述一下, 新开个贴子, 应该有大侠支招的,
我有个贴子好像是用这个翻译文本文件的,[color=#0000ff][size=16px]idwma大侠帮忙搞的, 你可以在我的贴子中找找看[/size][/color]

vegeta2000 发表于 2022-3-31 22:38

没翻到,有空请发一下

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.