2016-09-15 15 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

関連する問題