ユーザーがテキストファイルの内容を表示し、ファイルの最後に新しい文字列を返すことができる単純なバッチプログラムで作業しています。私の問題は、1 つのバッチ ファイルが内容を表示し、1 つが入力を取得しているためです。ユーザーが何かを入力し始めると、ファイルの内容が上書きされるため、入力内容が表示されません。
入力.bat
@echo off
set target=log.txt
if not exist "%target%" Copy con "%target%"
start /b print.bat "%target%"
type con >> %target%
Echo ERROR!
pause
Exit /b
print.bat
@echo off
if "%~1" equ "" (
cls
Echo ERROR print[0]: No parameter
pause
Exit /b
)
:loop
if not exist "%~1" (
Echo ERROR print[1]: Cannot find targetted file!
pause
Exit /b
)
cls
type "%~1"
sleep -m 50
goto loop
これで、バッチ ファイルが次のいずれかを使用して入力を受け取ることができることがわかりました。
set /p
choice
type con
上記の場合、私は を使用しtype con
、それを output.txt にリダイレクトします。ただし、ユーザーが入力しているものを確認できるようにする必要があります。これは、コンソールへの出力の連続ストリームでは非常に困難です。
もちろん、ユーザーが入力したものをコンソールに出力するというアイデアを思いつきました。これは、choice
コマンドを使用してキーを押すたびに記録すればもちろん可能です。ただし、これには 2 つの問題があります。まず、これにより、句読点やその他の特殊文字を記録できなくなります。次に、ユーザーが「戻る」ことでメッセージを追加したり、バックスペース キーを使用したりすることができなくなります。
これが、キーボード入力をバッチで記録する他の方法があるかどうかを知りたかった理由です。うまくいけば、私の問題を解決できる方法です。
pause
1 つには、 andコマンドがandを含むxcopy /w
1 つのキーを押すことができることを知っています。<Enter>
<Backspace>
このキー押下を変数またはテキストファイルにリダイレクトする方法はありますか? これを行う別の方法はありますか。もしそうなら、教えてください。これを C# で簡単に実行できるようになりましたが、このプロジェクトを完全にバッチ処理で完了したいと考えています。
ありがとう、モナ。