0

以下のコードを見つけてください:

current_dir = Dir.pwd
Dir.chdir('C:\Documents and Settings\Peter\My Documents\userdata\Downloaded Files')
current_dir = Dir.pwd

Dir.entries(current_dir)[2..-1].each do |dir|

  puts dir
  puts "-------"
  Dir.entries(dir)[2..-1].each do |d|

    #file_loc_dir =
    #File.rename(d, dir.concat(d))
    puts File.realdirpath(d ,dir)
    #puts dir.concat(d)

  end
  puts "-------"
end

出力:

C:\Documents and Settings\peter\My Documents\userdata\Ruby\Scripts>FileNamere
naming.rb
D07141
-------
C:/Documents and Settings/peter/My Documents/userdata/Downloaded Files/D07141
/Water lilies.jpg
C:/Documents and Settings/peter/My Documents/userdata/Downloaded Files/D07141
/Winter.jpg
-------
D07141101
-------
C:/Documents and Settings/peter/My Documents/userdata/Downloaded Files/D07141
101/Water lilies.jpg
C:/Documents and Settings/peter/My Documents/userdata/Downloaded Files/D07141
101/Winter.jpg

錯乱:

puts dirを指定している間、展開されたディレクトリ名を指定します。論理を明確にしていただけませんか?D07141D07141101File.realdirpath(d ,dir)

4

1 に答える 1

2

ドキュメントから:

実際のファイルシステム内のパス名の実際の(絶対)パス名を返します。実際のパス名には、シンボリックリンクや役に立たないドットは含まれていません。

dir_stringを指定すると、現在のディレクトリではなく、相対パス名を解釈するためのベースディレクトリとして使用されます。

実際のパス名の最後のコンポーネントは存在しない可能性があります。

http://apidock.com/ruby/v1_9_3_125/File/realdirpath/class

それがメソッドが行うことであるため、拡張されます。puts呼び出し内のdirを呼び出しているのではなく#entries、の戻り値で呼び出していますFile.realdirpath。これは、上記で説明したように、渡されたエントリを拡張します。

于 2013-01-30T08:20:39.087 に答える