1と変数の間の乱数を作成しようとしています。この変数は、プログラムが実行されるたびに変更されます。私はこれまでこれを使用しています:SET / A result =%random%*%var%/ 32768 + 1
しかし、バッチファイルを再実行するたびに同じ番号が返されます。人々は何が起こっているのか知っていますか?
前もって感謝します
1と変数の間の乱数を作成しようとしています。この変数は、プログラムが実行されるたびに変更されます。私はこれまでこれを使用しています:SET / A result =%random%*%var%/ 32768 + 1
しかし、バッチファイルを再実行するたびに同じ番号が返されます。人々は何が起こっているのか知っていますか?
前もって感謝します
代わりにこれを試してください:
set /a result=(%random% %% %var%) + 1
コマンドvar
でパーセント記号で囲む必要はありません。SET /A
このフォームは、ブロックの内側/外側の通常の拡張に関連するすべての問題を解決する必要があります。
SET /A result=%random%*var/32768+1
ただし、前のコマンドがブロック内にある場合は、このコマンドに変更する必要があります(そして遅延拡張を有効にします)。
SET /A result=!random!*var/32768+1
以前の解決策がまだ機能しない場合は、random
!という変数を定義しているに違いありません。%random%
これにより、それが内部で作成されるのを防ぎ、常に割り当てた値を返します。
アントニオ
IMOは、for
またはif
コードブロックで遅延拡張を使用する必要があります。