2

スクリプトを使用して、Dir.chdirを使用して作業ディレクトリを変更しようとしています。

これは機能します:

dirs = ['//servername/share','//servername2/share']

dirs.each do |dir|
  Dir.chdir dir
end

上記の共有情報をテキストファイル(各共有は新しい行に)に入れて、ロードしようとすると、次のようになります。

File.foreach("shares.txt") {|dir|
  Dir.chdir dir
}

このエラーが発生します:

'chdir':そのようなファイルまたはディレクトリはありません-// servername / share(Errno :: ENOENT)

テキストファイルから共有を読み取り、そのディレクトリに移動するにはどうすればよいですか?これを行うためのより良い方法はありますか?

4

1 に答える 1

6

試す

Dir.chdir dir.strip

また

Dir.chdir dir.chomp

理由:File.foreach改行()を含む行を取得します\n

strip先頭と末尾のスペースchompを削除し、末尾の改行を削除します。


別の可能性:あなたの例では、絶対パスを使用します。これは機能するはずです。

相対パスを使用する場合は、現在のディレクトリを確認してください(変更します)。ディレクトリを保持するには、のブロックバージョンを使用できますDir.chdir

于 2012-03-20T20:40:31.303 に答える