2011-08-30 84 views
3

Ruby从任务调度程序运行时不会识别目录。从Windows任务计划程序运行时,我遇到了与ruby类似的问题。Ruby在Windows任务调度程序中的行为不同

任何人都可以解释为什么从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 

发现我的目录,一,二和三是不再被视为目录中运行时。是什么赋予了?

+0

我之前就这么做过。当我尝试抓取File.stat记录器时,不会记录任何内容。它就像File.stat方法被阻止在“。”以外的任何其他地方运行。和“..”。我试图添加'File.stat(file).mtime'。它基本上只是跳过处理除当前目录之外的所有内容“。”和上面的目录“..”。 – Beaon

+0

我也刚刚尝试更改我的用户帐户的权限以批处理方式登录。问题仍然存在。 [链接](http://technet.microsoft.com/en-us/library/cc755659(WS.10).aspx) – Beaon

回答

0

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

+0

我想过。我曾尝试以管理员身份和具有管理权限的用户身份运行脚本。然而,感觉就像windows在运行脚本时使用权限和用户帐户搞笑一样。 – Beaon

相关问题