前段时间我做了一个函数,你可以从命令提示符或任何批处理文件中调用它(这只是为了好玩,我看不出它有什么用处)。它基本上只是让您的(Microsoft)计算机说出您作为参数写入的任何内容。我最近得到了一些灵感,给它添加了一个可以读取文件内容的开关。我的独立脚本可以工作,但是当我将它添加到我的函数中时,它并没有像我希望的那样工作。
这是代码:
@echo off & setlocal enabledelayedexpansion
if "%~1"=="/?" (
echo.
echo TALK "Text" [Parameters]
echo.
echo Text - The phrase you want to be spoken.
echo.
echo [Parameters]:
echo /f - Read the contents of a file. "Text" changes to the file path.
echo.
endlocal
exit /b
)
if "%~2 X" equ "/f X" (
if not exist %~1 (
echo File does not exist or cannot be found.
endlocal
exit /b
)
set cont=
for /f "delims=" %%i in (%~1) do set cont=!cont! %%i
:b
echo Set a = Wscript.CreateObject("SAPI.SpVoice") > "Talk.vbs"
echo a.speak "%cont%" >> "Talk.vbs"
start /WAIT Talk.vbs
del Talk.vbs
endlocal
exit /b
)
set text=%~1
echo set speech = Wscript.CreateObject("SAPI.spVoice") > "talk.vbs"
echo speech.speak "%text%" >> "talk.vbs"
start /WAIT talk.vbs
del Talk.vbs
endlocal
exit /b
不幸的是,我没有工作功能代码(在我添加/f
开关之前)。
这对我来说是最后的手段,因为我已经对其进行了大量编辑并搜索了代码以找出可能存在的问题。
另一个不好的事情是我没有注意到我改变了什么,所以我不能准确地告诉你我尝试了什么。我可以告诉你输出是什么。
我第一次尝试时,它给出了输出The syntax of the command is incorrect.
现在原始功能(只是将文本转换为语音)不再起作用了。该文件的内容Talk.vbs
(在此过程中生成)是a.speak ""
.
我会不断更新我的尝试,但我知道这是我忽略的非常简单的事情。
--EDIT-- 在某人的建议下,我在语法部分的方括号前加上了克拉。没有改变。