如何使用 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
我想检查所有具有 .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