0

かなり基本的なエラーのように感じるものに遭遇しましたが、私が苦労していることについてのドキュメントを見つけることができません。コードは次のとおりです。

require "fileutils"

def new_name(fn, dest = '/Volumes/External/Different\ Sublevel/Renamed', append = '_01')
    ext = File.extname(fn)
  File.join( dest, File.basename(fn, ext) + append + ext )
end

Dir[ '/Volumes/External/Example/Sublevels/**/*.xml' ].
select { |fn| File.file? fn }.
each   { |fn| FileUtils.cp fn, new_name(fn) }

私がやろうとしているのは、いくつかのファイルを(非破壊的に)移動し、ファイル名を追加することだけです。一部のローカルファイルではうまく機能しますが、機能させるために複数のレベルを../../../実行しました。外付けドライブの指定に関して何か特別なことはありますか?

4

1 に答える 1

1

アポストロフィ内で解釈されないエスケープされたスペース文字を含む文字列を渡そうとしています。エスケープ文字を省略する必要があります

'/Volumes/External/Different Sublevel/Renamed'

または二重引用符で囲みます

"/Volumes/External/Different\ Sublevel/Renamed"

'\\'アポストロフィで作成された文字列は、バックスラッシュとアポストロフィ自体の2つのエスケープシーケンスのみを解釈します'\''

wikibooks.orgのRuby文字列に関する詳細

于 2013-03-20T01:49:14.223 に答える