当从任务调度器运行时,Ruby 将无法识别目录。从 Windows 任务计划程序运行时,我遇到过与 ruby 类似的问题。
谁能解释为什么当从 Windows 任务计划程序运行时 ruby 会这样?
考虑我桌面上的以下目录
(d)test
----(d)One
----(d)Two
----(d)Three
----(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
请注意,我的目录一、二和三不再被视为目录。给了什么?
最佳答案
这完全是猜测,但 Windows 任务计划程序使用哪个用户运行脚本?由于该进程没有与我相同的权限,我依稀记得任务调度程序的问题。
关于Ruby 在 Windows 任务调度程序中的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251025/