작업 스케줄러에서 실행할 때 Bat 파일이 기록되지 않습니까?

작업 스케줄러에서 실행할 때 Bat 파일이 기록되지 않습니까?

2개의 서비스를 다시 시작하는 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

그리고 모든 사용자(또는 최소한 작업이 실행되는 사용자)가 선택한 폴더에 대한 쓰기 액세스 권한을 가지고 있는지 확인하십시오.

관련 정보