我试图将文件从一个文件夹复制到另一个文件夹,然后记录复制到日志文件中的所有文件的名称.两个文件夹都在同一目录中,我通过命令行获取该路径.在我的程序中,目前通过
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
这没什么,让我logFile
空虚.我尝试通过将File.open
选项更改为'w'而不是'a' 来解决此问题,但仍然没有做任何事情.然后我认为我必须正确实施它,所以我试着放
Dir.glob(argument3 + "*.*").each do |fileName| puts fileName end
作为一个完整性检查,但这也没有输出.我想要完成的是什么?如果是的话,我做错了什么,如果没有其他方法可以做到这一点?
编辑1:将Dir.glob
参数更改为
Dir.glob("*")
使它将当前目录文件写入日志.我认为这意味着我必须在我的argument3变量中有一些看不见的错字,但是当我这样做的时候
puts argument3 + "*"
它的输出C:\用户\亚历山大\桌面*我试图串联的文件路径之前,我通过它作为参数传递给Dir.glob
作为
filePath = argument3 + "*" Dir.glob(argument3 + "*.*").each do |fileName| File.open(logFile, 'a') {|file| file << "\n" + fileName} end
它仍然没有像我预期的那样工作.传递确切的文件路径是否有一些技巧Dir.glob
?我无法保证程序将始终位于运行时需要复制的目录中.
Dir.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