it-swarm-ja.com

出力をパイプし、現在の作業ディレクトリを保持しながら、別のバッチファイルからバッチファイルを起動するにはどうすればよいですか?

スケジュールされたタスクとして実行されるバッチファイルがあります。例として、それをalltasks.batと呼びましょう。

次のようになります。

@ECHO OFF
clearwebtemp.bat > clearwebtemp_out.txt
clearblahtemp.bat > clearblahtemp_out.txt
clearblihtemp.bat > clearblihtemp_out.txt

これは、呼び出されたスクリプトのいずれもディレクトリを変更しない場合は正常に機能しますが、変更した場合、メインスクリプトは残りのバッチ呼び出しを完了できないか、出力をファイルにパイプしません。

startコマンドを使用してみましたが、バッチファイル自体の出力ではなく、startコマンドの出力が予想どおりにパイプされました。

また、スクリプトの先頭にある%CD%変数を使用して現在の作業ディレクトリを保持し、呼び出しのたびに元のディレクトリに切り替えようとしましたが、ファイルへのパイプアウトは、スクリプトが切り替えたディレクトリ内で行われました。これは意味をなさないようでした。

私が達成しようとしていることを達成するための明白な(またはそれほど明白ではない)方法はありますか?

6
Lusitanian

これはあなたが求めていることをするはずです:

cmd /c clearwebtemp.bat > clearwebtemp_out.txt
cmd /c clearblahtemp.bat > clearblahtemp_out.txt
cmd /c clearblihtemp.bat > clearblihtemp_out.txt
5
Harry Johnston

別の解決策:

@ECHO OFF
pushd .
call clearwebtemp.bat > clearwebtemp_out.txt
popd
pushd .
call clearblahtemp.bat > clearblahtemp_out.txt
popd
pushd .
call clearblihtemp.bat > clearblihtemp_out.txt

または

@ECHO OFF
call clearwebtemp.bat > clearwebtemp_out.txt
%~d0
cd %~p0
call clearblahtemp.bat > clearblahtemp_out.txt
%~d0
cd %~p0
call clearblihtemp.bat > clearblihtemp_out.txt

コウモリが同じドライブにいる場合は、%~d0を無視できます。

1
Limer