【问题标题】:Cmd batch file executes only partly when using task scheduler使用任务计划程序时,Cmd 批处理文件仅部分执行
【发布时间】:2017-04-01 16:29:17
【问题描述】:

我已安排一个批处理文件在午夜运行。

  • 拥有最高权限,
  • 它以管理员身份运行并存储密码,与用户是否登录无关
  • 环境设置为windows 2012
  • 启动时使用批处理文件的文件夹。

批处理文件位置和启动文件夹分别:

c:\ip\ip1.bat
c:\ip\

批处理文件内容:

taskkill /im python.exe /f >nul 2>&1
taskkill /im chrome.exe /f >nul 2>&1

timeout 5
netsh interface ipv4 add address "Ethernet" 104.122.112.106 255.255.255.0

timeout 5
::netsh interface ipv4 delete address "Ethernet" 104.122.112.106
netsh interface ipv4 delete address "Ethernet" 104.122.112.107
netsh interface ipv4 delete address "Ethernet" 104.122.112.108

timeout 40
start /min "" python.exe C:\Users\Administrator\Desktop\host\server2.py

timeout 10
start /min "" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir="D:\chrome1" --js-flags="--expose-gc"

如果手动启动,上述批处理可以完美运行。

但是,只要任务调度程序启动上述文件,它只会部分执行。

发生的情况是 python 和 chrome 进程都被杀死但没有重新启动。

尽管如此,任务调度程序仍报告上次运行结果成功 (0x0)。

非常感谢您的帮助和建议。

编辑:

实际上,两个进程都已启动!

但是它们是在后台运行的,也就是说,我在任务管理器中看到它们,但我无法以任何方式与它们交互。

【问题讨论】:

  • 不,事实并非如此。请查看编辑...
  • 那么还有什么悬而未决的问题吗?
  • 是的,它们应该被最小化到任务栏,但不能作为后台进程运行!
  • 因此希望批处理独立于当前登录的用户运行,同时具有当前登录用户的访问权限。您必须选择吃蛋糕还是吃蛋糕。
  • 好吧,我以“管理员”用户身份登录,并且该进程也以“管理员”用户身份运行。我不明白为什么这是一个限制。

标签: batch-file cmd scheduled-tasks windows2012 start-process


【解决方案1】:

设置选项“仅在用户登录时运行”实际上解决了这个问题。

我一直试图避免使用此选项,因为我使用 RDP 连接到服务器,并且无法 24/7 保持连接。尽管如此,当断开我的 RDP 会话时,“管理员”用户仍然保持登录状态,任务调度程序无论如何都会执行程序。

还有一个问题,start命令忽略了/min开关,启动的进程没有最小化到任务栏。

我已经发布了另一个问题:Cmd start command ignores /min switch

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 2013-06-11
    • 2014-10-02
    • 1970-01-01
    • 2014-03-15
    • 2014-10-13
    • 1970-01-01
    • 2014-11-12
    • 2013-10-19
    相关资源
    最近更新 更多