2から10の間でランダムな回数ループし、毎回テキストファイルからランダムな行を引き出して表示するバッチファイルを作成しようとしています。
set var1=%RANDOM%
set /a var2=(var1*9/32768)+2
for /l %%x in (1,1,%var2%) do (
set "lines=0"
for /f "tokens=*" %%a in (c:\myfile.txt) do set /a "lines+=1"
set /a "skip=%var1% %% lines"
if %skip% lss 1 (set "skip=") else (set "skip=skip=%skip%")
for /f "skip=%skip% tokens=*" %%a in (c:\myfile.txt) do set "item=%%a"&goto display
:display
echo %item%
)
これは、それぞれが独自に機能する2つの異なるコードですが、それらを組み合わせるのに問題があります。
以下のコードは、実行するたびにファイルからランダムな行を表示します。
set "lines=0"
for /f "tokens=*" %%a in (c:\myfile.txt) do set /a "lines+=1"
set /a "skip=%random% %% lines"
if %skip% lss 1 (set "skip=") else (set "skip=skip=%skip%")
for /f "%skip% tokens=*" %%a in (c:\myfile.txt) do set "item=%%a"&goto display
:display
echo %item%
そして、このコードは2〜10回1を表示します。
@echo off
set var1=%RANDOM%
set /a var2=(var1*9/32768)+2
for /l %%x in (1,1,%var2%) do (
echo 1
)
私はおそらく明白なことを見落としているだけですが、バッチスクリプトはあまり行いません。