タスク スケジューラから実行する場合、Bat ファイルはログに記録されませんか?

タスク スケジューラから実行する場合、Bat ファイルはログに記録されませんか?

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

そして、すべてのユーザー (または少なくともタスクを実行するユーザー) が選択したフォルダーへの書き込みアクセス権を持っていることを確認します。

関連情報