2016-09-15 2 views
0

У меня следующий пакетный код, код выполняется отлично, когда я дважды нажимаю на пакет, но когда я пытаюсь запустить его через планировщик задач Windows, он работает только частично. Я не могу понять, почему.пакетный файл полностью не работает с планировщиком задач на окнах

В основном код удаляет все строки ergo, работает до 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' в качестве первой строки. Это позволит убедиться, что он запускается из каталога пакетного файла, а не из любого используемого планировщика окон по умолчанию. – FloatingKiwi

+0

@FloatingKiwi, 'cd/D"% ~ dp0 "' лучше, поскольку текущий каталог может находиться на другом диске ... – aschipfl

ответ

0

При запуске из планировщика задач, вероятно, что «текущий каталог» будет отличаться от того, используется при запуске скрипта напрямую. Поэтому я хотел бы предложить, добавив следующий третьей линии:

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

отлично, спасибо. – SS97