Ruby在Windows任务调度程序中的行为有所不同

时间:2011-08-30 23:44:58

标签: ruby windows scheduled-tasks

Ruby从任务调度程序运行时无法识别目录。从Windows任务调度程序运行时,我遇到过与ruby类似的问题。

有人可以解释为什么ruby在从Windows任务计划程序运行时会以这种方式运行吗?

考虑我桌面上的以下目录

  

(d)测试
  ----(d)一个
  ----(d)两个
  ----(d)三个
  ----(F)dirs.rb
  ----(F)log.log

(d)=目录 (f)=档案

考虑以下Ruby脚本。

require 'logger'

log = Logger.new("C:/Users/crosson.Z7NETWORKS/Desktop/test/log.log", 'daily')
log.level = Logger::INFO

Dir.new("C:/Users/crosson.Z7NETWORKS/Desktop/test").each do |file|
log.info "%7s a dir? %s" % [file, File.directory?(file)]
end

以下是从命令行运行时的日志结果。

I, [2011-08-30T12:50:47.700617 #5356]  INFO -- :       . a dir? true
I, [2011-08-30T12:50:47.700617 #5356]  INFO -- :      .. a dir? true
I, [2011-08-30T12:50:47.700617 #5356]  INFO -- : dirs.rb a dir? false
I, [2011-08-30T12:50:47.700617 #5356]  INFO -- : log.log a dir? false
I, [2011-08-30T12:50:47.700617 #5356]  INFO -- :     One a dir? true
I, [2011-08-30T12:50:47.700617 #5356]  INFO -- :   Three a dir? true
I, [2011-08-30T12:50:47.701617 #5356]  INFO -- :     Two a dir? true

以下是从任务计划程序

运行时的日志结果
I, [2011-08-30T13:03:07.187316 #5972]  INFO -- :       . a dir? true
I, [2011-08-30T13:03:07.188316 #5972]  INFO -- :      .. a dir? true
I, [2011-08-30T13:03:07.188316 #5972]  INFO -- : dirs.rb a dir? false
I, [2011-08-30T13:03:07.188316 #5972]  INFO -- : log.log a dir? false
I, [2011-08-30T13:03:07.188316 #5972]  INFO -- :     One a dir? false
I, [2011-08-30T13:03:07.188316 #5972]  INFO -- :   Three a dir? false
I, [2011-08-30T13:03:07.188316 #5972]  INFO -- :     Two a dir? false

请注意,我的目录One,Two和Three不再被视为目录。是什么给了什么?

1 个答案:

答案 0 :(得分:0)

这是一个完整的猜测,但是用户运行脚本的Windows任务计划程序是什么用户?我模糊地记得任务调度程序的问题,因为该过程没有与我相同的权利星座。