2017-04-18 41 views
0

私はバットスクリプトを持っており、その中の各機能の処理時間を取得しようとしています。開始時刻と終了時刻をキャプチャする2つの他のバットスクリプトがありますが、これらの変数をメインスクリプトに戻すと、それは機能しません。あるバッチから別のバッチに変数を渡す方法

if exist "inProcess.lok". (
    exit 
    ) else (
      if EXIST "some.ZIP". (
       call startTime.bat 
       set /a startDel=%1 

    ::some Process 

       call endTime.bat 
       set /a endDel=%2 
       set /a timeDel= (%endDel% - %startDel%) 
       set /a timeDels= %timeDel%/100 
       set timeDel=%timeDels%.%timeDel:~-2% 
       echo %timeDel% 
       echo %timeDel% 
       echo %timeDel% 
       pause 
    )) 

startTime.BAT

set starttime=%TIME% 
set startcsec=%STARTTIME:~9,2% 
set startsecs=%STARTTIME:~6,2% 
set startmins=%STARTTIME:~3,2% 
set starthour=%STARTTIME:~0,2% 
set /a starttime=(%starthour%*60*60*100)+(%startmins%*60*100)+(%startsecs%*100)+(%startcsec%) 

:trigger.bat %starttime% 

endTime.Bat TRIGGER.bat

お知らせください

set endtime=%time% 
set endcsec=%endTIME:~9,2% 
set endsecs=%endTIME:~6,2% 
set endmins=%endTIME:~3,2% 
set endhour=%endTIME:~0,2% 
if %endhour% LSS %starthour% set /a endhour+=24 
set /a endtime=(%endhour%*60*60*100)+(%endmins%*60*100)+(%endsecs%*100)+(%endcsec%) 

:trigger.bat %endtime% 
+2

バッチファイルのすべてで実行同じプロセス。同じプロセス内の以前のバッチファイルによって設定された変数をそのまま使用することができます。コマンドライン引数で値を渡すと、名前はなく数字になります。 – Joey

+0

Gotcha、私は渡された変数を数値として使用しています /endDel =%2 セット/ a startDel =%1 しかし、何らかの理由でスクリプトがこれらの値を受け入れていません。 – EddieT

+0

括弧で囲まれた一連の命令(別名「コードブロック」)内で変更された変数の実行時の値を表示するには、 'delayedexpansion'を呼び出す必要があります。 'endtime.bat'の中で計算と表示をして、表示するパラメータを与えることができる場所はどこですか?終了するプロシージャの名前は? – Magoo

答えて

0

あなたはcallをランダムに使用します。それは動作しません。 (ジョーイはコメントで提案されているように、単に変数を使用して、パラメータなし)ここで
が、それは仕事ができるかの非常に基本的な例である

Trigger.bat:

set starttime=dummy 
set endtime=dummy 
call starttime.bat 
call endtime.bat 
echo %starttime% %endtime% 

starttime.bat:

set starttime=hello 

endtime.bat:

set endtime=world 
関連する問題