0

こんにちは、作業中のバッチファイルを完成させようとしています。

動機付けの引用テキストファイルのライブラリがあり、バッチファイルでランダムな引用テキストファイルを1つ選択してコマンドウィンドウに表示したい. 私が推測するコマンドタイプで。

引用符付きのフォルダーへの私のパスは次のとおりです。

 C:\Users\niv\Documents\test\scripts\quotes

内部にある:

      Quote 1.txt
      Quote 2.txt
      Quote 3.txt.

もちろん、選択した quote1.txt のみを表示する「type "C:\Users\niv\Documents\test\scripts\quotes\quote1.txt」というコマンドを実行しました。

可能であれば、選択した引用テキストファイルを変数にして、バッチファイルのさまざまなタスクに使用できるようにしたい:

選択した見積もりを受け取った後、コンピューターが "" の後に何かを読み取れるようにするプログラムでこのコマンドを実行します。このような

%speech% "%quotes%"

%speech% を使用すると、コンピューターは引用符内の内容を話すことができます。

質問するだけでなく、ここで何を達成しようとしているのかを理解していただければ幸いです:)

4

3 に答える 3

0

私の答えは、指定したパス内のテキスト ファイルの数を数え、ランダムな引用番号を選択して引用を入力することに重点を置いています。前の回答は両方とも、引用符を変数に挿入するための参照として使用できます(私のコードでは提供されません):

@Echo off
set path=C:\Users\niv\Documents\test\scripts\quotes
cd /D %path%
setLocal EnableDelayedExpansion
set count=0

for %%a in (*.txt) do (
set /a count=!count!+1
)
echo Total number of quote files: %count%

set /a num=(%count% * %random%) / 32768 + 1
echo Quote #: %num%

type "%path%\quote %num%.txt" 

endlocal
于 2012-10-16T22:17:31.660 に答える
0

次のように、テキスト ファイルを変数に読み込むことができます。

setlocal EnableDelayedExpansion

set filename=Quote 1.txt
for /f "tokens=*" %%a in ('type "%filename%"') do (
  set quote=!quote!%%a^

)

echo !quote!

endlocal

末尾^set quote=!quote!%%a^空行が続くと、追加された各行は改行で終了します。改行が必要ない場合は、置き換えることができます

for /f "tokens=*" %%a in ('type "%filename%"') do (
  set quote=!quote!%%a^

)

for /f "tokens=*" %%a in ('type "%filename%"') do (
  set quote=!quote! %%a
)

引用符全体を 1 行で取得します。

いずれにせよ、これには遅延拡張が必要です(!quote!の代わりに%quote%)。

于 2012-10-16T21:52:51.330 に答える