locked
WINDOWS SERVER 2003 scheduled task运行bat问题 RRS feed

  • 问题

  • 我编写了一个BAT程序,代码如下

    @echo off
    rem 开发代码备份 每天凌晨2:00执行
    echo %date% %time:~0,8% START>>log.txt
    for /f "tokens=2" %%I in ('echo %date% ^|find " "') do set week=%%I
    if exist "Z:\CodeBackup\%week%backup" rd /S /Q "Z:\CodeBackup\%week%backup"
    if errorlevel 0 echo %date% %time:~0,8% 删除%week%备份成功>>log.txt
    if not errorlevel 0 echo %date% %time:~0,8% 删除%week%备份失败>>log.txt
    xcopy d:\Repositories "\\10.10.31.111\d$\CodeBackup\%week%backup\SVN" /I/Y/E
    xcopy d:\Team "\\10.10.31.111\d$\CodeBackup\%week%backup\Team" /I/Y/E
    if errorlevel 0 echo %date% %time:~0,8% 备份成功>>log.txt
    echo %date% %time:~0,8% END>>log.txt

    然后新建了一个计划任务每天运行这个bat,现在的情况是,计划任务result为0,所有echo代码运行正常,但是rd,xcopy完全没有执行,像略过了一样,照理3分钟运行完的bat, 一秒就完成了,在运行的那一秒内也不会跳黑框,像静默运行。但是我鼠标双击此程序运行就有效。我试过换台服务器修改代码后运行此脚本也无效,试过编译此BAT作为EXE运行也无效,im going crazy! 只能来求助了,谢谢!

    P.S. :Z盘已映射。

    • 已移动 Alexis ZhangMVP 2012年12月5日 22:02 与主题更相符。 (发件人:一般性问题讨论区)
    2012年12月5日 5:53

答案

  • 这个问题被我一个同事解决了,他只加了一句。

    net use z: \\10.10.31.111\d$ "password" /user:"Administrator"

    抓狂啊!= =|||

    • 已标记为答案 蓝的 2012年12月26日 2:23
    2012年12月26日 2:23

全部回复

  • 你好,由于这个问题涉及 Windows Server 2003 的组件,但又与服务器设置关系不大,所以将其移动至 Windows XP 组讨论。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    我编写了一个BAT程序,代码如下
    @echo off
     
     
    2012年12月5日 22:18
  • 你的批处理文件内容没有问题,以任务计划方式运行出现非预期的效果,可能与任务计划运行批处理的用户身份有关。
     
    你在设置任务计划时有没有指定运行此任务的用户身份?如果当前用户帐户是管理员帐户,请在设置任务计划时将任务指定为另一个管理员帐户并输入相应密码确认,然后再试试。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
    然后新建了一个计划任务每天运行这个bat,现在的情况是,计划任务result为0,所有echo代码运行正常,但是rd,xcopy完全没有执行,像略过了一样,照理3分钟运行完的bat, 一秒就完成了,在运行的那一秒内也不会跳黑框,
     
     
    2012年12月5日 22:27
  • 请问对之前的回复有疑问吗?如果运行任务计划的是任意自建的管理员帐户,请尝试设置为以 Administrator 运行此任务;如果运行任务的就是
    Administrator,可以随便新建一个临时的管理员帐户运行此任务,看看有没有问题?
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "Alexis Zhang"
     
    你的批处理文件内容没有问题,以任务计划方式运行出现非预期的效果,可能与任务计划运行批处理的用户身份有关。
    你在设置任务计划时有没有指定运行此任务的用户身份?如果当前用户帐户是管理员帐户,
     
     
    2012年12月9日 22:03
  • 请问对之前的回复有疑问吗?如果运行任务计划的是任意自建的管理员帐户,请尝试设置为以 Administrator 运行此任务;如果运行任务的就是
    Administrator,可以随便新建一个临时的管理员帐户运行此任务,看看有没有问题?
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "Alexis Zhang"
     
    你的批处理文件内容没有问题,以任务计划方式运行出现非预期的效果,可能与任务计划运行批处理的用户身份有关。
    你在设置任务计划时有没有指定运行此任务的用户身份?如果当前用户帐户是管理员帐户,
     
     
    感谢版主关心,我尝试过新建另外的账户,加入到Administrators组后运行,因为本来运行账户就是Administrator,仍然无果。我觉得可能是脚本问题,因为我尝试过把这个脚本放到其他服务器在正常跑scheduled job的服务器上运行,只有这个脚本不能正常运行,其他脚本都在正常运行。
    2012年12月10日 2:10
  • 我发现一个问题,如果我把脚本内的$IPC,或者映射改成本地,用scheduled job运行是正常的。我在想是不是$IPC或者映射的问题。有待进一步尝试,我会及时更新。
    2012年12月10日 2:32
  • 我的意思是说,当你在任务计划中添加新任务时,在添加向导中有个步骤是指定运行此任务的用户身份,并需要输入两次密码确认。尝试把这个运行任务的身份设置为一个不同的管理员帐户,看看行不行。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    感谢版主关心,我尝试过新建另外的账户,加入到Administrators组后运行,因为本来运行账户就是Administrator,仍然无果。我觉得可能是脚本问题,因为我尝试过把这个脚本放到其他服务器在正常跑scheduled
     
     
    2012年12月10日 22:16
  • 脚本内的 $IPC 或映射可以在运行脚本之前手动单独访问么?
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    我发现一个问题,如果我把脚本内的$IPC,或者映射改成本地,用scheduled job运行是正常的。我在想是不是$IPC或者映射的问题。有待进一步尝试,我会及时更新。
     
    2012年12月10日 22:17
  • 我了解你的意思,我指定的运行用户身份已经换过了,谢谢提醒。

    本帖回复Alexis Zhang

    我的意思是说,当你在任务计划中添加新任务时,在添加向导中有个步骤是指定运行此任务的用户身份,并需要输入两次密码确认。尝试把这个运行任务的身份设置为一个不同的管理员帐户,看看行不行。

    2012年12月11日 2:34
  • 全部可以手动访问,而且用鼠标双击脚本的方式运行脚本也都没有问题,只有用scheduled job方式运行的时候无效。

    以下是net use

    Status       Local     Remote                    Network

    -----------------------------------------------------------------------------
    OK           Z:        \\10.10.31.111\d$         Microsoft Windows Network
    The command completed successfully.

    本帖回复Alexis Zhang

    脚本内的 $IPC 或映射可以在运行脚本之前手动单独访问么?

    2012年12月11日 2:37
  • OK,那就可以排除用户帐户身份对任务计划的影响了。这也是一种常见的程序可以单独运行、但无法通过任务计划正常运行的原因。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    我了解你的意思,我指定的运行用户身份已经换过了,谢谢提醒。
    本帖回复Alexis Zhang
     
     
    2012年12月11日 21:59
  • 我找到一篇 KB951246,是说如果批处理中含有较多的引号时可能无法被任务计划正确识别。不过这是只适用于 Windows Server 2008 的。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    全部可以手动访问,而且用鼠标双击脚本的方式运行脚本也都没有问题,只有用scheduled job方式运行的时候无效。
    以下是net use
     
     
    2012年12月11日 22:06
  • 建议再试一下把批处理转换为其它可执行程序的格式试试看。有些转换工具可以将批处理文件转换为可执行文件或脚本,试试转换格式后用任务计划运行有没有问题?
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    全部可以手动访问,而且用鼠标双击脚本的方式运行脚本也都没有问题,只有用scheduled job方式运行的时候无效。
    以下是net use
     
     
    2012年12月14日 22:01
  • 还有另外一个方法请试一下,为这个批处理文件建立快捷方式,然后修改快捷方式属性,在“起始位置”一栏添加需要访问的 $IPC 或映射地址,然后将快捷方式添加为任务计划。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "Alexis Zhang"
     
    建议再试一下把批处理转换为其它可执行程序的格式试试看。有些?还ぞ呖梢越砦募晃芍葱形募蚪疟荆允宰桓袷胶笥萌挝窦苹诵杏忻挥形侍猓?
     
     
    2012年12月15日 22:12
  • 感谢版主从开贴以来的悉心回复,我决定还是把IPC和映射改成本地算了。。。实在是搞不定,神马方法都用上了,感谢版主。
    2012年12月17日 1:40
  • 建议的这些方法都不行吗?
     
    如果都不行就遗憾了,可能是任务计划对 $IPC 映射地址的识别能力靠不住。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    感谢版主从开贴以来的悉心回复,我决定还是把IPC和映射改成本地算了。。。实在是搞不定,神马方法都用上了,感谢版主。
     
     
    • 已标记为答案 蓝的 2012年12月19日 2:36
    • 取消答案标记 蓝的 2012年12月26日 2:23
    2012年12月17日 21:39
  • 版主你好,我再问一个问题,如何让我的脚本在scheduled job run时可以弹出cmd窗口,我现在的脚本run的时候都只是显示running状态而没有cmd对话框,还是这本来就不可实现?谢谢
    2012年12月19日 5:45
  • 长时间连续显示的命令提示符是需要单独开启的,通过运行命令行工具、用于显示运行状态的命令提示符窗口在命令结束后自动关闭。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    版主你好,我再问一个问题,如何让我的脚本在scheduled job run时可以弹出cmd窗口,我现在的脚本run的时候都只是显示running状态而没有cmd对话框,还是这本来就不可实现?谢谢
     
    2012年12月19日 21:53
  • 如果希望执行一个命令后,命令提示符窗口不关闭,可以使用 CMD.EXE 的 /K 参数,后面接要执行的命令。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    版主你好,我再问一个问题,如何让我的脚本在scheduled job run时可以弹出cmd窗口,我现在的脚本run的时候都只是显示running状态而没有cmd?曰翱颍故钦獗纠淳筒豢墒迪郑啃恍?
     
    2012年12月19日 21:55
  • 这个问题被我一个同事解决了,他只加了一句。

    net use z: \\10.10.31.111\d$ "password" /user:"Administrator"

    抓狂啊!= =|||

    • 已标记为答案 蓝的 2012年12月26日 2:23
    2012年12月26日 2:23
  • 是把这行加在批处理最前面了吗?这么说还是运行的用户权限问题。看来为任务计划设置运行权限还不足以覆盖执行批处理时访问映射盘的权限。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "蓝的"
     
    这个问题被我一个同事解决了,他只加了一句。
    net use z: \\10.10.31.111\d$ "password" /user:"Administrator"
     
     
    2012年12月26日 22:25