質問: 出力をパイプし、現在の作業ディレクトリを保持しながら、別のバッチファイルからバッチファイルを起動するにはどうすればよいですか? スケジュールされたタスクとして実行されるバッチファイルがあります。例として、それをalltasks.batと呼びましょう。次のようになります。@echo off clearwebtemp.bat > clearwebtemp_out.txt clearblahtemp.bat > clearblahtemp_out.txt clearblihtemp.bat > clearblihtemp_out.txt これは、呼び出されたスクリプトのいずれもディレクトリを変更しない場合は正常に機能しますが、変更した場合、メインスクリプトは残りのバッチ呼び出しを完了できないか、出力をファイルにパイプしません。startコマンドを使用してみましたが、バッチファイル自体の出力ではなく、startコマンドの出力が予想どおりにパイプされました。また、スクリプトの先頭にある%cd%変数を使用して現在の作業ディレクトリを保持し、呼び出しのたびに元のディレクトリに切り替えようとしましたが、ファイルへのパイプアウトは、スクリプトが切り替えたディレクトリ内で行われました。これは意味をなさないようでした。 私が達成しようとしていることを達成するための明白な(またはそれほど明白ではない)方法はありますか?
回答: 別の解決策:@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を無視できます。