我正在尝试从 Windows 2008 R2 中的任务计划程序运行 BAT 脚本,它运行了 3 秒然后停止。
它说它已成功完成但我知道它并没有。
我可以直接从命令行运行该脚本,而且它运行良好。
我正在运行的 bat 文件实际上使用“forfiles”删除了超过 7 天的文件,然后我映射网络驱动器,使用 robocopy 在网络上移动文件,然后关闭网络连接。
我已经从文件中删除了网络和复制选项,但它仍然会出现同样的情况。以下是我的文件:
rem This will delete the files from BBLEARN_stats
forfiles -p "E:\BB_Maintenance_Data\DB_Backups\BBLEARN_stats" -m *.* -d -17 -c "cmd /c del @file"
rem This will delete the files from BBLEARN_cms_doc
forfiles -p "E:\BB_Maintenance_Data\DB_Backups\BBLEARN_cms_doc" -m *.* -d -14 -c "cmd /c del @path"
rem This will delete the files from BBLEARN_admin
forfiles -p "E:\BB_Maintenance_Data\DB_Backups\BBLEARN_admin" -m *.* -d -10 -c "cmd /c del @path"
rem This will delete the files from BBLEARN_cms
forfiles -p "E:\BB_Maintenance_Data\DB_Backups\BBLEARN_cms" -m *.* -d -10 -c "cmd /c del @path"
rem This will delete the files from attendance_bb
forfiles -p "E:\BB_Maintenance_Data\DB_Backups\attendance_bb" -m *.* -d -10 -c "cmd /c del @path"
rem This will delete the files from BBLearn
forfiles -p "E:\BB_Maintenance_Data\DB_Backups\BBLEARN" -m *.* -d -18 -c "cmd /c del @path"
rem This will delete the files from Logs
forfiles -p "E:\BB_Maintenance_Data\logs" -m *.* -d -10 -c "cmd /c del @path"
NET USE Z: \\10.20.102.225\coursebackups\BB_DB_Backups /user:cie oly2008
ROBOCOPY E:\BB_Maintenance_Data Z: /e /XO /FFT /PURGE /NP /LOG:BB_DB_Backups.txt
openfiles /disconnect /id *
NET USE Z: /delete /y
当尝试从 BAT 文件内部运行命令时,两台服务器上都发生了这种情况。
如果 (0xFFFFFFFF),另一台服务器就会给出错误,但该文件正在运行,CALL C:\dir\dir\file.bat -options
并且我之前在 Server 2003 中使用过类似的命令。
以下是该文件的文件:
call C:\blackboard\apps\content-exchange\bin\batch_ImportExport.bat -f backup_batch_file.txt -l 1 -t archive
NET USE Z: \\10.20.102.225\coursebackups\BB_Course_Backups /user:cie oly2008
ROBOCOPY E:\ Z: /move /e /LOG+:BB_Move_Course_Backups.txt
openfiles /disconnect /id *
NET USE Z: /delete /y
答案1
如果批处理文件无法作为计划任务执行,但交互运行良好,则很可能是由于安全/权限问题。例如,通常用于运行计划任务的 SYSTEM / LocalSystem 帐户通常没有访问任何网络资源的权限。
您的计划任务的安全上下文是什么?您可以尝试将其暂时更改为更具特权的内容(例如域管理员帐户)作为假设检验。
如果可行,您应该创建一个新帐户,该帐户具有复杂的密码和足够的权限来执行任务。帐户密码与计划任务一起保存 - 通过使用单独的帐户,您可以遵循良好的安全做法,并防止管理员密码更改时任务运行失败。