我有这个批处理文件:
@echo off
echo StrText="Application created Successfully" > spk.vbs
echo set ObjVoice=CreateObject("SAPI.SpVoice") >> spk.vbs
echo ObjVoice.Speak StrText >> spk.vbs
start spk.vbs此批处理文件在同一目录中创建spk.vbs,并以计算机语音输出文本"Application created Successfully“。
现在,我希望批处理文件读出在命令行上提供的文本文件的内容(%1)。应该在默认的Windows临时目录中创建spk.vbs文件。我该怎么做呢?
*编辑06.11.2012 20:24
同时,我放弃了使用批处理文件脚本来生成vbs脚本文件的想法,而希望直接使用vbs脚本。虽然我是VBS的初学者,但我还是创建了这个:
Set objFSO = CreateObject("Scripting.FileSystemObject")
strAFile = Wscript.Arguments(0)
Set objFile = objFSO.GetFile(strAFile)
If objFile.Size > 0 Then
Set objReadFile = objFSO.OpenTextFile(Wscript.Arguments(0), 1)
strContents = objReadFile.ReadAll
objReadFile.Close
set ObjVoice=CreateObject("SAPI.SpVoice")
ObjVoice.Speak strContents
Else
Wscript.Echo "The file is empty."
End If它是有效的,但可能我犯了很多错误。有人能告诉我如何优化vbs脚本吗?谢谢!
*编辑06.11.2012 22:19
在几次工作之后,现在它不再工作了:现在计算机扬声器只输出"Y“和文本文件的第一个字符!这与我的脚本中的一个错误有关吗?
*编辑10.11.2012 19:32发现错误:上述脚本仅适用于ANSI编码的文本文件。它不适用于UNICODE文本文件!为什么?我怎样才能使它与UNICODE文本文件一起工作呢?
发布于 2012-11-11 18:40:52
使用.OpenTextFile方法的第4个参数(或.OpenAsTextStream的第2个参数)指定是以ASCII码还是Unicode (16)格式打开文件。
我在您的代码片段中没有发现任何严重的错误,但是您可能需要考虑:
通过定义适当的常量(例如,ForReading)
例如:
Set objReadFile = objFSO.OpenTextFile(WScript.Arguments(0), 1)
strContents = objReadFile.ReadAll
objReadFile.Close==>
Const cnUnicode = -1
...
strContents = objFile.OpenAsTextStream(ForReading, cnUnicode).ReadAll()https://stackoverflow.com/questions/13257446
复制相似问题