
2 つのサービスを再起動する bat ファイルを作成し、タスク スケジューラで実行しています。 bat ファイルを通常どおり実行すると、現在のディレクトリに bat ファイルとしてログが記録されているのがわかります。 しかし、タスク スケジューラで実行すると、サービス ウィンドウのように bat が実行され、サービスが再起動しているのがわかりますが、ログには何も記録されません...。 問題が何かわかる人はいますか?
これは Windows Server 2008 R2 64 ビット版です。
ありがとう
@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%
答え1
タスク スケジューラで何かを実行すると、作業フォルダー (既定) は になります%windri%\system32
。したがって、タスクによって作成されたファイルのうち、パスが指定されていないファイルは、そこに書き込まれます (または、少なくともそこに書き込もうとします)。
これを回避するには、行に絶対パスを指定しますSET logfilename_sp_fix="SPSearchFix.log"
。
例えば:SET logfilename_sp_fix="c:\temp\SPSearchFix.log
そして、すべてのユーザー (または少なくともタスクを実行するユーザー) が選択したフォルダーへの書き込みアクセス権を持っていることを確認します。