別のバッチファイル内のバッチファイルでコマンドを実行する方法......別のバッチファイル内にあるバッチファイルでコマンドを実行する
コマンドを別のコンソールで実行しようとしていますコマンドプロンプトをバッチファイルで実行できませんでした。他のコンソールをバッチファイルで起動できますが、コマンドを渡すことはできません。
別のバッチファイル内のバッチファイルでコマンドを実行する方法......別のバッチファイル内にあるバッチファイルでコマンドを実行する
コマンドを別のコンソールで実行しようとしていますコマンドプロンプトをバッチファイルで実行できませんでした。他のコンソールをバッチファイルで起動できますが、コマンドを渡すことはできません。
あなたは呼び出し文を試みることができる:
コールbatchname.bat
が、これは、現在開いているプロンプト
応答ありがとうございました.........他のバッチファイルを開始できますが、親バッチファイルでコマンドを渡すことができません。子バッチファイルをその新しいコンソールに起動した後です。私の必要条件は、新しいバッチファイルから新しいコンソールにコマンドを渡すことです。 – Sampath
に指定されたバッチファイルを実行します質問の私の最初の解釈があることを信じるように私を導きましたSampathは2つのコマンドセットを持つ1つのバッチスクリプトが必要でした。これを呼び出すと、親ウィンドウ内で第1のコマンドセットが実行され、第2のコマンドセットで同じスクリプトが実行される第2のウィンドウが開きます。
"%〜f0"は、現在実行中のバッチスクリプトへのフルパスを与えます。単純なコマンドライン引数は、実行するコードを決定するスイッチとして機能します。
@echo off
if "%~1"==":PART2" goto %~1
::use this line if 2nd window is to remain open upon completion
::start "%~f0" :PART2
::use this line if 2nd window is to close upon completion
start cmd /c "%~f0" :PART2
echo Test parent output
pause
exit /b
:PART2
echo Test child output
pause
exit /b
Andriy Mは、Sampathが2番目のウィンドウにコマンドを動的に送信できるようにしたいと考えています。これはmaster.batとslave.batという2つのスクリプトで行うことができます。
slave.batはstdinからコマンドを読み込んで実行します。 master.batはコマンドファイルにリダイレクトされた入力でスレーブを起動し、コマンドファイルにコマンドを追加します。
次に、スレーブにコマンドを送信する方法を示すmaster.batの例を示します。マスターはコマンドの入力を要求しますが、スレーブウィンドウにはフォーカスがあります。マスターをクリックして、選択したコマンドを入力できるようにしてください。
@echo off
:: create an empty command file
type nul >cmds.txt
:: start the slave with input redirected to the command file
start slave.bat ^<cmds.txt
:: issue some commands by appending them to the command file
>>cmds.txt echo echo command 1
>>cmds.txt echo echo command 2
>>cmds.txt echo echo(
>>cmds.txt echo rem /?
:: ask for a command to send to the slave
set /p "cmd=Enter a command to be sent to the slave: "
:: send the command
>>cmds.txt echo %cmd%
::pause so we can see the results in the slave window
for /l %%n in (1 1 1000000) do rem
::tell the slave to exit
>>cmds.txt echo exit
そしてここslave.batは何がしたいことは、あなたが実行したいコマンドを保持するファイルであり、それらの上で呼び出すためのバッチスクリプトを使用するようにそれはほとんど聞こえる
@echo off
:top
set "cmd="
set /p "cmd="
%cmd%
goto :top
OPのコメントは、私の質問が間違っていることを明らかにしました。あなたの答えは間違いなく近いですが、コメントから正しく判断できれば、実際にはすでに実行中のバッチスクリプト(そして別のコンソールウィンドウにもあります)にコマンドを渡すことが実際の目的です。 –
@AndriyM - あなたは正しいかもしれないと思います。私の更新された答えはあなたの解釈を扱います。 – dbenham
ですあなたが欲しい時にコマンド?
これは、便利なすべてのコマンド(コードスニペット)を保持するバッチファイルを作成し、他のバッチスクリプトを使用してそのスニペットの「マスター」ファイルを呼び出すことで実装しました。
例えば、私のMASTER_BAT.BAT
ファイル、このような使用方法の一見のために別の形式で日付を作成するためのスニペットの例では:
GOTO:%~1
:GET_CURRENT_DATE
:: Created: 1/19/2012
:: Creates variables for the date format in different forms.
:: No additional arguments required
SET DISABLED=0
IF [%DISABLED%] == [1] GOTO:EOF
:: Created: 11/30/11
:: Creates date formats.
Set mdy=%date:~4,2%-%date:~7,2%-%date:~12,4%
Set mdY=%date:~4,2%-%date:~7,2%-%date:~10,4%
Set Dmdy=%date:~0,4%%date:~4,2%-%date:~7,2%-%date:~12,4%
Set DmdY=%date:~0,4%%date:~4,2%-%date:~7,2%-%date:~10,4%
Set ymd=%date:~12,4%-%date:~4,2%-%date:~7,2%
Set ymd=%date:~10,4%-%date:~4,2%-%date:~7,2%
GOTO:EOF
そして、私のCHILD_BAT.BAT
で、私が作成し、そのスニペットを使用したいです日付形式...
CALL MASTER_BAT.BAT "GET_CURRENT_DATE"
ECHO %mdy%
PAUSE
CHILD_BAT.BAT
のためのあなたの出力は次のようになります:
1-23-12
Press any key to continue...
、任意の私はmm/dd/yy形式で現在の日付で日付を呼び出すことができるようにそれを作りたいと言うことができますCALL
コマンドの前にCHILD_BAT.BAT
で作成された変数は、MASTER_BAT.BAT
スクリプトにも渡されます。ただし、forループの場合は、CALL
を含むため、forループの一時変数は渡されません。
希望すると便利です。
EDIT:私のスニペットは米国の日付形式で使用できることに注意してください。
あなたはすでに持っているものを表示できます – L7ColWinters