2016-09-15 2 views
0

배치 코드를 두 번 클릭하면 코드가 제대로 실행되지만 Windows 작업 스케줄러를 통해 실행하려고하면 코드가 부분적으로 만 실행됩니다. 이유를 이해할 수 없습니다.윈도우에서 작업 스케줄러를 사용하여 배치 파일을 완전히 실행하지 않음

기본적으로 코드는 모든 행을 삭제하고 mysql -e "DELETE FROM software_it.hardware" -u root까지 실행되며 더 이상 실행하지 않습니다. 어떤 도움이라도 좋을 것입니다.

@ECHO OFF 
setlocal enabledelayedexpansion 
mysql -e "DELETE FROM software_it.hardware" -u root 
FOR %%f IN ("*.csv") DO (
    set old=%%~dpnxf 
    set new=!old:\=\\! 
    mysql -e "load data local infile '"!new!"' into table software_it.hardware COLUMNS TERMINATED BY ',' IGNORE 1 ROWS" -u root 
    echo %%~nxf DONE 
) 
+0

내가 느끼는 것은 그것이 특정 폴더에서 실행해야한다는 것을 이해하지 않는다는 것입니다! 내가 맞습니까? – SS97

+2

첫번째 줄에'cd % ~ dp0'를 추가하십시오. 이렇게하면 모든 기본 Windows 스케줄러가 사용하는 대신 배치 파일 디렉토리에서 실행되는지 확인할 수 있습니다. – FloatingKiwi

+0

@FloatingKiwi, 현재 디렉토리가 다른 드라이브에있을 수 있기 때문에'cd/D "% ~ dp0"'이 더 좋습니다 ... – aschipfl

답변

0

작업 스케줄러에서 실행하면 '현재 디렉터리'가 스크립트를 직접 실행할 때 사용되는 것과 다를 수 있습니다. 그래서 저는 다음과 같은 세 번째 줄을을 추가 제안 :

IF /I "%CD%\" NEQ "%~dp0" PUSHD "%~dp0" 
+0

감사합니다. – SS97

관련 문제