Ruby:Dir.glob不返回任何文件

Ruby:Dir.glob不返回任何文件,ruby,command-line,directory,Ruby,Command Line,Directory,我试图将文件从一个文件夹复制到另一个文件夹,然后将复制到日志文件中的所有文件的名称记录下来。两个文件夹都在同一个目录中,我通过命令行选择该路径。在我的程序中,目前通过 argument3 = ARGV[2] + "\\" 已成功成为“c:\user\alexander\desktop\”。 然后,我将桌面上的文件复制到桌面上已有的文件夹中 system "copy #{argument3}*.* #{argument3}TestFolder" 这也成功地完成了我从cmd输出和检查文件夹本身验

我试图将文件从一个文件夹复制到另一个文件夹,然后将复制到日志文件中的所有文件的名称记录下来。两个文件夹都在同一个目录中,我通过命令行选择该路径。在我的程序中,目前通过

argument3 = ARGV[2] + "\\"
已成功成为“c:\user\alexander\desktop\”。 然后,我将桌面上的文件复制到桌面上已有的文件夹中

system "copy #{argument3}*.* #{argument3}TestFolder"
这也成功地完成了我从cmd输出和检查文件夹本身验证的任务。最后,我尝试将文件名保存到路径为“c:\user\alexander\desktop\log.txt”的日志文件中。我试图通过使用

logFile = "c:\\user\\alexander\\desktop\\log.txt"
Dir.glob(argument3 + "*.*").each do |fileName|
    File.open(logFile, 'a') {|file| file << "\n" + fileName}
end
作为一个健全的检查,但这也没有输出任何东西。我想实现的目标可能吗?如果是,我做错了什么,如果不是,还有别的方法吗

编辑1: 将
Dir.glob
参数更改为

Dir.glob("*")
正在使其将当前目录文件写入日志。我想这意味着我的argument3变量中一定有一些看不见的拼写错误,但当我这么做的时候

puts argument3 + "*"
它的输出c:\user\alexander\desktop*我尝试连接文件路径,然后将其作为参数传递给
Dir.glob
as

filePath = argument3 + "*"
Dir.glob(argument3 + "*.*").each do |fileName|
    File.open(logFile, 'a') {|file| file << "\n" + fileName}
end
filePath=argument3+“*”
Dir.glob(argument3+“*”)。每个文件名|
打开(logFile,'a'){| File | File试试一颗星:

logFile = "c:\\user\\alexander\\desktop\\log.txt"
Dir.glob(argument3 + "*").each do |fileName|
    File.open(logFile, 'a') {|file| file << "\n" + fileName}
end
logFile=“c:\\user\\alexander\\desktop\\log.txt”
Dir.glob(argument3+“*”)。每个文件名|

File.open(logFile,'a'){| File | FileDir.glob似乎无法接受文件路径,只接受要在当前目录中查找的文件模式。解决方法是使用Dir.chdir移动到所需的目录,然后使用Dir.glob(“.”)获取所需输出的。glob不会使用反斜杠。即使在Windows上,也可以用反斜杠代替正斜杠:

logFile = "c:\\user\\alexander\\desktop\\log.txt"
Dir.glob(argument3.gsub('\\','/') + "*.*").each do |fileName|
    File.open(logFile, 'a') {|file| file << "\n" + fileName}
end
logFile=“c:\\user\\alexander\\desktop\\log.txt”
Dir.glob(argument3.gsub('\\','/')+“**”)。每个文件名|

File.open(logFile,'a'){| File |应该可以工作的文件-如果argument3关闭(我知道你的复制示例工作了),
把Dir.glob('*')放在什么位置?我把
把Dir.glob('*')放在
位置,它返回我当前目录中的所有文件。只放Dir.glob('*'))在我的
.each do | fileName |
循环中,虽然仍然没有输出任何内容,但我尝试将
fileName.to _
也放入
中。关于
Dir.glob
的工作方式,我缺少什么吗?不,我不这么认为-关于
Dir.glob('*'){f | puts f}
?尝试了类似的操作,但它只显示当前目录文件。我现在的解决方法是使用
Dir.chdir
更改到我需要的目录,然后使用
Dir.glob(“*”)
。我一直无法找到将文件路径传递到
Dir.glob
directlyOK的方法-一个方法是将
Dir.chdir
传递到所需的目录,然后输出
Dir.pwd
,以查看系统如何将目录表示为字符串。只需使用一个星号即可使Dir.glob获得当前directo中的所有文件名ry但我正在尝试的任何东西都无法使它转到其他目录并在那里获取文件名。Dir.glob是否只允许您访问当前目录中的文件?这是我所缺少的一点知识。这使一切都按预期进行。感谢您的帮助。很高兴它起作用-很抱歉以这种迂回的方式获取t这里-我使用Mac/Linux:)
logFile = "c:\\user\\alexander\\desktop\\log.txt"
Dir.glob(argument3.gsub('\\','/') + "*.*").each do |fileName|
    File.open(logFile, 'a') {|file| file << "\n" + fileName}
end