【问题标题】:batch file not executing completely using task scheduler on windows批处理文件未在 Windows 上使用任务调度程序完全执行
【发布时间】:2016-09-15 14:13:00
【问题描述】:

我有以下批处理代码,当我双击批处理时代码执行良好,但是当我尝试通过 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
)

【问题讨论】:

  • 我的感觉是它不明白它必须从那个特定的文件夹执行!我说的对吗?
  • 尝试将cd %~dp0 添加为第一行。这将确保它从批处理文件目录而不是任何默认的 windows 调度程序运行。
  • @FloatingKiwi, cd /D "%~dp0" 更好,因为当前目录可能驻留在不同的驱动器上...

标签: mysql batch-file scheduled-tasks


【解决方案1】:

从任务调度程序运行时,“当前目录”可能与您直接运行脚本时使用的不同。因此,我建议添加以下第三行

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2013-06-06
    相关资源
    最近更新 更多