ホームページ » の仕方 » このフォルダを報告しているWindowsがコピーするには長すぎるのはなぜですか?

    このフォルダを報告しているWindowsがコピーするには長すぎるのはなぜですか?

    特に長い名前のフォルダやファイルを使ってWindowsを使って作業すると、奇妙なエラーが発生します。フォルダのパスやファイル名が長すぎるため、新しいフォルダに移動したり削除したりすることはできません。どうしたんだ?

    ちょっとハウツーオタク!

    だから先日、私は自分のコンピュータ上のいくつかのファイルを再編成し、フォルダを作成していました。その後、ファイルをフォルダに移動すると、フォルダパスが長すぎることを示すメッセージが表示されます。私は混乱していた。 DOS以降のすべてのOSがロングファイル名をサポートしていることを私は知っていますが、Windowsはパスが長すぎると主張していますか?なぜこれが起こるのですか?

    心から,

    解散した氏

    あなたが直面している問題は、このような場合には、エラーをもたらす2つのシステムの不幸な交差点です。エラーの原因を正確に理解するには、解決策を探る前に、ロングファイルネーム(LFN)の歴史と、Windowsがそれらをどのようにやり取りするかを調べる必要があります。.

    長いファイル名は、Windows 95で、基礎となるMS-DOSアーキテクチャを通じて導入されました。新しいLFNシステムでは、最大255文字のファイル名とディレクトリ名を使用できます。名前は8文字と3桁の拡張子に制限されていたため、通常8.3ファイル命名と呼ばれていましたが、ショートファイル名(SFN)とも呼ばれていました。ご想像のとおり、当時はまだDOSベースのアプリがたくさんあり、新しいLFNと従来のSFNをうまく組み合わせようとしているときに頭痛の種がいくつかありました。奇妙に切り詰められたファイル(abcdef〜1.txtなど)が入った古いディスケットやCD-ROMに遭遇したことがある場合、そのファイル名はSFNを使用している古いLFNからabcdefghijkのように切り捨てられています。 txt).

    しかし、私たちは1990年代半ばからはまだ長い道のりを経ていて、Long Filenameのことは(大部分は)しっかりと解決されています。過去10年間のバージョンのWindowsを実行している場合、私たちがDOS / Windows 95の頃に遭遇していたように、ファイル名の長さの衝突に遭遇することすらありません。それは言った、あなたがあなたのディスククリーンアッププロジェクトで発見したように、我々はまだしゃっくりに出くわす。しかし、なぜ? WindowsのLong Filenameシステムが、1コンポーネントあたり最大255文字のフォルダとファイル名をサポートしている場合、どのような問題に直面していますか? NTFSはフォルダとファイル名の連鎖をサポートし、合計32,767文字のパス長をサポートするため、NTFS(最近のWindowsマシンの大部分が使用しているファイルシステム)のせいにはできません。これは、ほとんどのユーザーが必要とする典型的なディレクトリ構造をはるかに超えています。.

    すべてがバラバラになるのは、WindowsがLFN / NTFSシステムの上に重なるという人為的な制限であるMAX_PATH変数です。 MAX_PATH変数は、Windowsの完全なディレクトリ構造が、末尾のドライブ文字、コロン、バックスラッシュ、ヌルバックラッシュを含めて合計260文字を超えないように指定します。したがって、あなたは256文字の潜在的な実際のMAX​​_PATHしか持っていません。. C:\あなたの256文字のパス\.

    だからあなたがあなたのコンピュータを片付けていたときに起こったことはあなたがすでに長いパスを持つディレクトリを持っていたということである(フォルダ名が長い、ファイル名が長い、あるいはその両方である)。これらのディレクトリーを長いパスを持つ別のディレクトリーに入れ、パス名の合計長がMAX_PATH変数によって課される260文字の制限を超えました.

    さて、あなたは考えているかもしれません。残念ながら、それはそれほど簡単ではありません。 MAX_PATH変数が本質的にWindowsにハードコードされているだけでなく、それを変更するという大変な面倒を経験したとしても、あなたはそれを壊すことになるでしょう。あまりにも多くのアプリケーションは、パス変数がWindowsが長い間それを指定したものであると予想します。莫大な混乱を招くことなしにそれを変更することはできません。.

    それはどこにあなたを残しますか?最も簡単な解決策は、パスデータを編集することです。たとえば、Webからそれらを保存するために使用したapplication / extensionが、記事のフルタイトル+記事のリードであるディレクトリを作成し、ファイル名自体がフルタイトルになっている、大量の保存された記事がある場合記事+記事の先導者にとって、1回の保存でMAX_PATHを超えるか超えることは本当に簡単です。これらの巨大なフォルダと記事のタイトルをより合理的なサイズに編集することは、問題を解決する簡単な方法です。.

    長いパスを持つファイルが大量にあり、それらすべてを編集したくない場合(または必要な場合) 削除する MAX_PATH変数で制限されている場合にWindowsが処理するには長すぎる古いディレクトリが多数ありますが、コマンドラインで回避する方法があります。 WindowsはMAX_PATH変数によって制限されていますが、Windowsエンジニアは、ユーザーがより長いパス名を処理する必要がある状況があることに気付きました。そのため、Windows APIには非常に長いパスを処理する機能があります。.

    そのAPIを利用し、扱いにくいフォルダ/ファイル名にコマンドラインツールを使用するには、ディレクトリ名にいくつかの追加文字を追加するだけです。たとえば、削除したい巨大なディレクトリ構造があった場合(ただし、実行しようとしたときにパス長が原因でエラーが発生した場合)は、次のコマンドを変更できます。

    rmdir c:\ documents \本当に超長フォルダ名の構成\

    に:

    rmdir \\?\ c:\ documents \本当に超長いフォルダ名のスキーム\

    重要なのは、 \\?\ ファイルパスの先頭より前の部分。これは、MAX_PATH変数によって課される制限を無視し、基礎となるファイルシステムによって直接提供/理解されたとおりに指定したパスと対話するように指示します(より長いパスを明確にサポートできます)。いつものように、あなたがそのまま残しておくつもりだったファイルやディレクトリを誤って削除しないようにコマンドプロンプトで注意を払ってください.

    この問題の概要を知りたい場合は、Microsoft Developer NetworkライブラリのNaming Files、Paths、Namespacesからこの記事を読んでください。.


    緊急の技術的な質問がありますか? [email protected]に私達に電子メールを撃つと私たちはそれに答えるために最善を尽くします.