3

1と変数の間の乱数を作成しようとしています。この変数は、プログラムが実行されるたびに変更されます。私はこれまでこれを使用しています:SET / A result =%random%*%var%/ 32768 + 1

しかし、バッチファイルを再実行するたびに同じ番号が返されます。人々は何が起こっているのか知っていますか?

前もって感謝します

4

3 に答える 3

3

代わりにこれを試してください:

set /a result=(%random% %% %var%) + 1
于 2013-03-22T22:05:39.643 に答える
2

コマンドvarでパーセント記号で囲む必要はありません。SET /Aこのフォームは、ブロックの内側/外側の通常の拡張に関連するすべての問題を解決する必要があります。

SET /A result=%random%*var/32768+1

ただし、前のコマンドがブロックにある場合は、このコマンドに変更する必要があります(そして遅延拡張を有効にします)。

SET /A result=!random!*var/32768+1

以前の解決策がまだ機能しない場合は、random!という変数を定義しているに違いありません。%random%これにより、それが内部で作成されるのを防ぎ、常に割り当てた値を返します。

アントニオ

于 2013-03-23T00:12:00.373 に答える
0

IMOは、forまたはifコードブロックで遅延拡張を使用する必要があります。

于 2013-03-22T21:55:47.103 に答える