質問: タスクスケジューラから実行すると、batファイルがログに記録されませんか? 2つのサービスを再起動するbatファイルを作成し、タスクスケジューラで実行しました。 batファイルを正常に実行すると、現在のディレクトリにbatファイルとして記録されていることがわかります。しかし、タスクスケジューラを介して実行すると、サービスウィンドウのように、バットの実行を確認できます。サービスの再起動を確認できますが、何もログに記録されません。問題が何であるかを誰かが知っていますか?これは、windows server 2008 r264ビット上にあります。ありがとう@echo off set waittimeseconds_sp_fix=15 set logfilename_sp_fix="spsearchfix.log" echo %date% %time% - restart starting >> %logfilename_sp_fix% net stop sptimerv4 >> %logfilename_sp_fix% 2>&1 if errorlevel 0 ( echo %date% %time% - worked - stopped timer service >> %logfilename_sp_fix% ) else ( echo %date% %time% - failed - stopped timer service >> %logfilename_sp_fix% exit ) timeout %waittimeseconds_sp_fix% net stop osearch14 >> %logfilename_sp_fix% 2>&1 if errorlevel 0 ( echo %date% %time% - worked - stopped search service >> %logfilename_sp_fix% ) else ( echo %date% %time% - failed - stopped search service >> %logfilename_sp_fix% exit ) timeout %waittimeseconds_sp_fix% net start sptimerv4 >> %logfilename_sp_fix% 2>&1 if errorlevel 0 ( echo %date% %time% - worked - started timer service >> %logfilename_sp_fix% ) else ( echo %date% %time% - failed - started timer service >> %logfilename_sp_fix% exit ) timeout %waittimeseconds_sp_fix% net start osearch14 >> %logfilename_sp_fix% 2>&1 if errorlevel 0 ( echo %date% %time% - worked - started search service >> %logfilename_sp_fix% ) else ( echo %date% %time% - failed - started search service >> %logfilename_sp_fix% exit ) timeout %waittimeseconds_sp_fix% echo %date% %time% - restart completed >> %logfilename_sp_fix% echo. >> %logfilename_sp_fix% echo. >> %logfilename_sp_fix% echo. >> %logfilename_sp_fix% echo. >> %logfilename_sp_fix% echo. >> %logfilename_sp_fix% echo. >> %logfilename_sp_fix%
回答: タスクスケジューラで実行する場合、作業フォルダ(デフォルト)は%windri%\system32です。したがって、タスクによって作成された、パスが指定されていないファイルはすべてそこに書き込まれます(または、少なくともそこに書き込もうとします)。これを回避するには、set logfilename_sp_fix="spsearchfix.log"行に絶対パスを指定します。例:set logfilename_sp_fix="c:\temp\spsearchfix.logまた、すべてのユーザー(または少なくともタスクを実行するユーザー)が、選択したフォルダーへの書き込みアクセス権を持っていることを確認してください。