2016-09-09 3 views
0

Windows 10のコマンドプロンプトが1つ実行され、入力待ちの状態であり、2番目のコマンドプロンプトを使用して連続入力とライブ入力を自動化したいとします。目的の変数を抽出するための2番目のコマンドプロンプトが表示され、入力を待っている別のコマンドプロンプトにそのコマンドを送信します。ネイティブウィンドウで2つのコマンドプロンプトターミナルを実行すると、その出力をもう一方の入力にどのようにリダイレクトできますか?

"待機中の入力"コマンドプロンプトは、マイクロコントローラに接続しているPlink(SSHセッションではなく、ここでは-mコマンドを使用しない)に接続されているため、リアルタイムで実行する必要があります。だから、少なくとも関数呼び出しでは達成できません(少なくとも私は思っていません)。

私はそれがUNIX環境で行うことができることを参照してください。事前にhttps://askubuntu.com/questions/496914/write-command-in-one-terminal-see-result-on-other-one

感謝をし、アドバイスしてください、

-A-希望に満ちた初心者

+0

は、私はあなたを誤解かもしれませんが、このサンプルの答えはあなた – elzooilogico

+0

に簡単な方法を助けないかもしれないが、それは可能です。 DosTipsの[cmdファイルを介してコマンドウィンドウにコマンドを送信する - Rejected StackOverflowの質問](http://www.dostips.com/forum/viewtopic.php?f=3&t=7078)をご覧ください。 – dbenham

答えて

0

バッチコードが始まる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) 
) 
+0

ニースですが、OPのターゲットプロセスはバッチスクリプトであると仮定しています。バッチスクリプトは、コマンドを終了するまで無限に入力を探すように変更できます。これは、既存のexeユーティリティまたはバッチスクリプトで修正できません。その場合、最初のプロセスが次の行を書き込む前に、ファイルの終わりに達した場合には早く終了します。あなたのアイデアを拡張する方法については、[.batファイルを介してコマンドウィンドウにコマンドを送信する - 拒否されたStackOverflowの質問](http://www.dostips.com/forum/viewtopic.php?f=3&t=7078)を参照してください。ほとんどのシナリオで動作します。 – dbenham

+0

@dbenhamサンプル、私は将来もっとオープンなシナリオを考えていきます。 – elzooilogico

関連する問題