【问题标题】:On Windows, copy a file to my network folders in Ruby在 Windows 上,将文件复制到我的 Ruby 网络文件夹中
【发布时间】:2015-09-13 12:03:36
【问题描述】:

在 Windows 上,我在 C:\Users\test\Documents 中有一个名为“test.txt”的文件,我想用路径(来自属性)\10.2.2.22\my_folder\ 将它复制到我的网络文件夹中输出

我用这一行正确地在 Windows 上创建了文件:

File.open("#{Dir.pwd}/output.txt",'a') do |file|
   file.puts "Hello!"
end

然后,我尝试复制它

 sent_to_folder=exec('copy output.txt \\10.2.2.22\my_folder\output')

但我收到错误“系统找不到指定的路径”。 如果我通过 cmd 运行相同的命令,则文件被正确复制

有什么建议吗?

【问题讨论】:

    标签: ruby windows file copy


    【解决方案1】:

    \ 是转义字符,它必须通过转义来自行转义。所以将所有反斜杠加倍应该可以。

    sent_to_folder=exec('copy output.txt \\\\10.2.2.22\\my_folder\\output')
    

    您也可以使用 FileUtils copy_file 并使用 Unix 样式的正斜杠; Ruby 会将它们转换为 Windows 样式。 (我认为;无法测试)

    【讨论】:

    • 如何在 Linux 机器上实现相同的功能?它在同一个文件夹中复制一个名为 '\\\\10.2.2.22\\my_folder\\output' :(
    【解决方案2】:

    正如接受的答案中提到的,您可以在文件路径中使用正斜杠来消除使用混乱转义字符的需要。 Ruby 会将它们转换为反斜杠。

    如下使用:

    require 'FileUtils'
    
    FileUtils.cp('path/to/copy output.txt', '//10.2.2.22/my_folder/output')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-02
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2012-12-30
      相关资源
      最近更新 更多