#1です。#1に書いたとおり動くコードを書くまで考えるのは面倒なので、(3)は方針だけ。
(1)(2)
:loop
set /p VAR="英字1文字だけ入力:"
echo "%VAR%">tmp.txt
for %%F in (tmp.txt) do if %%~zF NEQ 5 echo 1文字でない&goto loop
tmp.txt に読み込んだ文字と引用符2文字と改行コード2バイトを書き込んで、ファイル長が5なら読んだ文字が1文字だとわかります。
(3) 入力した %VAR% は大文字か小文字かわからないので、小文字に変換します。
set %VAR%=%VAR:A=a%
set %VAR%=%VAR:B=b%
をZまで並べれば、%VAR%の文字は小文字になります。ここでやった文字列置き換え方法については、set /? を参照。
そこには書かれていませんが、置換元の文字は大文字・小文字が区別されません。
つまり、set DATA=%DATA:a=a% は、DATA中のAをaに置き換えます。
ファイルから文字列を読むには for /f を使います。詳しくは for /? 参照。
%LINE% にファイルから読んだ行が入っているとして、遅延環境変数展開(意味は set /? 参照)を有効にして、
set LINE=!LINE:%VAR%=%VAR%!
で、先ほど書いたように行中の大文字が小文字に変換されます。
それを echo %LINE%>>fileout.txt 等とファイルに書けばOK。
あと、考慮すべきなのは最初に英字でなく特殊記号が入力されると後段でエラーになるケースがあるので、英字であることを確認したほうがいいかもしれません。
for /? と set /? と setlocal /? を読んで上記が理解できなければ、VBScript + WSH を勉強したほうがいいでしょう。上記のようなことを書いた書籍はありませんが、VBScriptの入門書は何冊も出ています。WSHのことが書いてあるものを選んでください。
補足
ご回答ありがとうございます。 ちなみにWindowsXPを使っているのですが、どういう方法があるのでしょうか。 ご指導いただければ助かります。