これは、1回のパスでファイルからランダムな行を取得し、それをコンソールに出力してファイルに書き込むバッチスクリプトです。
つまり、私が持っているecho !LINE!
のは、HTMLファイルを作成する場所です。、、、、、、およびその他のキャラクターは特別であり、前に逃げる必要があるため>
、実際にはバッチで一種の苦痛を伴います。<
%
^
!
^
@echo off
SET /A LINE_NUM=0
SET LINE=
setlocal EnableDelayedExpansion
for /F "delims=" %%l in (random_lines.txt) do (
call:rand 0 !LINE_NUM!
IF !RAND_NUM! LSS 1 (
SET LINE=%%l
)
SET /A LINE_NUM=!LINE_NUM! + 1
)
echo !LINE!
echo ^<^^!doctype html^>^<html^>^<head^>^<title^>Random Quote^</title^>^</head^>
> %OUT_FILE%
echo ^<body^>^<p^>^<strong^>!LINE!^</strong^>^</p^> >> %OUT_FILE%
echo ^</body^>^</html^> >> %OUT_FILE%
goto :EOF
REM rand()
REM Input: %1 is min, %2 is max
REM Output: RAND_NUM is set to a random number from min through max.
:rand
SET /A RAND_NUM=%RANDOM% * (%2 - %1 + 1) / 32768 + %1
goto :EOF
または、おそらくより良い方法として、HTMLをバッチファイル内に配置する代わりに、2つの部分に分けて別のファイルに保存することができます。2つの部分を結合して完全なHTMLファイルを作成する接着剤は、選択した行です。たとえば、次のファイルsig_file_header.txt
を含むファイルを作成できます。
<!doctype html>
<html>
<head>
<title>Random Quote</title>
</head>
<body>
<p><strong>
sig_file_footer.txt
次に、これで呼び出されるファイルを作成できます。
</strong></p>
</body>
</html>
これらのファイルをまとめると、ヘッダーの後にフッターが続き、完全なHTMLドキュメントが得られることに注意してください。したがって、それらを組み合わせると、スクリプトが選択した行を詰め込んで、その行を含む完全なHTMLドキュメントを取得できます。
それを行うのは簡単です。上記のスクリプトで始まる4行をecho !LINE!
次の3に置き換えます。
type sig_file_header.txt > new_signature_file.html
echo !LINE! >> new_signature_file.html
type sig_file_footer.txt >> new_signature_file.html