如何使用 ruby 代码检查 windows 中是否存在许多文件

How to check many files exist with ruby code in windows

我想检查所有具有 .war 扩展名的文件并将它们移动到 chef-client windows 中的另一个文件夹,但它不起作用。

if !Dir.glob("C:\tempwar\*.war").empty?  
    execute 'mv-war' do
        command 'move C:\tempwar\*.war C:\tomcat\webapps\ '  
    end
end

此处的反斜杠字符未被解释为路径名分隔符。例如,您的 \t 变成制表符,而 \* 只是一个 *。加倍反斜杠或使用单引号字符串,你就有了战斗的机会。

最好在 ruby 和 ::File.join 中构建路径。这以平台中立的方式处理路径分隔符。此外,最好使用 Chef 条件而不是将内容包装在 if 中。所以试试这个:

execute 'mv-war' do
  command "move #{::File.join('C:', 'tempwar', '*.war')} #{::File.join('C:',  'tomcat', 'webapps'} "
  only_if { Dir.glob(::File.join('C:', 'tempwar', '*.war').empty? }
end