少し前に、コマンド プロンプトまたは任意のバッチ ファイルから呼び出すことができる関数を作成しました (これはただの楽しみでした。どのように役立つかわかりません)。基本的には、(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
スイッチを追加する前)。
これは私にとって最後の手段です。私はそれを大幅に編集し、コードを精査して問題の原因を突き止めました。
もう 1 つの悪い点は、何を変更したかを書き留めていなかったことです。そのため、何を試したかを正確に伝えることはできません。ただし、出力が何であるかはわかります。
初めて試したとき、出力が得られましたThe syntax of the command is incorrect.
元の機能 (テキストを音声に変換するだけ) が機能しなくなった時点です。ファイルTalk.vbs
(プロセス中に作成された)の内容はa.speak ""
.
私は自分の試みを更新し続けますが、私が見落としているのは本当に単純なことだと知っています.
--編集-- 誰かの提案で、構文セクションの角括弧の前にカラットを置きました。何も変わっていません。