1

私はバッチのプログラマーで、このサイトに参加して 1 つの質問をしました...

1 から 10 までの乱数を書き込み、それらをファイルにエンコード/書き込みするこのプログラムを作成しました...問題は、別のバッチ ファイルが数値を読み取って、5 未満かどうかを確認する必要があることです。

乱数を生成するバッチ ファイルがファイルに乱数を入力していません。代わりに、ファイルは言う

エコーはオフです

これにより、他のバッチ ファイルが混乱するため、クラッシュします。

両方のバッチ ファイルのコードを次に示します。

数字の「書き手」

    @echo off >nul
    title Batch Arithmetic Communicator
    :check
    timeout /t 1 >nul /nobreak
    echo %t% >>wait.rsm
    SET /A t=%RANDOM% * 10 / 32768 + 1
    goto cont

    :cont
    timeout /t 1 >nul
    if exist pack.rsm goto cont2
    if NOT exist pack.rsm goto cont

    :cont2
    set /p data=<pack.rsm
    del pack.rsm
    if %data% LSS 5 goto move
    if %data% GTR 5 goto check

The receiver of the numbers


@echo off
:a
timeout /t 1 >nul
if exist wait.rsm goto b
if NOT exist wait.rsm goto a

:b
set /p d=<wait.rsm
if %d% GTR 5 goto a
if %d% LSS 5 goto w

:w
echo 3>>pack.rsm
goto a

ヘルプ?

4

1 に答える 1

1

あなたのライターは、設定する前に%t% をエコーし​​ています:

echo %t% >>wait.rsm
SET /A t=%RANDOM% * 10 / 32768 + 1

その最初のステートメントの時点で、%t%何も設定されていないため、次のように言えます。

echo >>wait.rsm

ECHO is offこれが、「裸の」エコーコマンドで表示されるものを取得している理由です。

%t基本的に、エコーする前に設定する必要があるため、これら 2 つのステートメントを入れ替えます。

SET /A t=%RANDOM% * 10 / 32768 + 1
echo %t% >>wait.rsm
于 2013-07-15T11:43:14.520 に答える