バッチコードが始まる2は、取得するためのプロセス、1をパイプキーボード入力とファイルへの書き込み、もう一方は書き込まれたデータの読み取りです。各プロセスにはcmdウィンドウはありませんが、2つの新しいプロセスが実行されています。 2台のコンソールが必要な場合は、cmd /c
またはstart
を使用できます。
役立ちますか?
@echo off
set "pipefile=pipefile.txt"
if "%~1" neq "" goto %1
copy nul "%pipefile%" >nul
"%~F0" getInput >>"%pipefile%" | "%~F0" readInput <"%pipefile%"
echo(
echo(Batch end...
ping localhost -n 1 >nul
del /F /Q "%pipefile%" 2>nul
exit/B
:getInput
set "input="
set/P "input="<CON
echo(%input%
if /I "%input%" equ "EXIT" exit
goto:getInput
:readInput
setlocal enableDelayedExpansion
set/P="enter some data [EXIT to exit] "
for /l %%. in() do (
set "input="
set/P "input="
if defined input (
if /I "!input!" equ "EXIT" exit
set/P="enter some data [EXIT to exit] "
)
ping 1.1.1.1 -w 10 -n 1 >nul 2>nul & rem avoid processor load (may be removed)
)
実行している2つのコンソールウィンドウ
@echo off
set "pipefile=pipefile.txt"
if "%~1" neq "" goto %1
del /F /Q "%pipefile%" 2>nul
copy nul "%pipefile%" >nul
start "writer" cmd /c ^""%~f0" readInput ^<"%pipefile%" ^"
start "reader" cmd /c ^""%~f0" getInput ^"
echo(
Echo batch end...
ping localhost -n 1 >nul
goto :EOF
:getInput
set "input="
set/P "input=enter some data [EXIT to exit] "
echo(%input%>>"%pipefile%"
if /I "%input%" equ "EXIT" exit
goto:getInput
:readInput
setlocal enableDelayedExpansion
for /l %%. in() do (
set "input="
set /p "input="
if defined input (
if /I "!input!" equ "EXIT" exit
echo(!input!
)
ping 1.1.1.1 -w 10 -n 1 >nul 2>nul & rem avoid processor load (may be removed)
)
は、私はあなたを誤解かもしれませんが、このサンプルの答えはあなた – elzooilogico
に簡単な方法を助けないかもしれないが、それは可能です。 DosTipsの[cmdファイルを介してコマンドウィンドウにコマンドを送信する - Rejected StackOverflowの質問](http://www.dostips.com/forum/viewtopic.php?f=3&t=7078)をご覧ください。 – dbenham