web-dev-qa-db-ja.com

ファイル名が長すぎてWindowsがファイルを開けない

ネットワークドライブ上、かなり深いパス上に多数のファイルがあり、ほとんどのディレクトリには長い名前があります。これらはもともと、このファイルのグループのルートディレクトリをローカルワークステーションから共有ネットワークドライブにコピーして貼り付けたときに作成されたと思います。ローカルワークステーションではファイルを開くのに問題はなかったと思いますが、ネットワーク上の長いパス上にあるため、ダブルクリックしてもWindowsで開くことができません。また、ファイルをコピーして、名前を別の短い名前に変更しようとしましたが、Windowsもそれを行うことができません。

TL; DR

次のような(架空の)パス上の誰かのワークステーションからのファイル:

C:\Documents and Settings\SomeUser\Files\RootOfLongFileNames\LongSubdirectoryName1\...\VeryLongAndDescriptiveAndSpecificFilename.xls
-----------------------------------------^

これで、次のようにコピーされてネットワークに貼り付けられました。

Q:\Dir1\Dir2\ProjectA\FilesForSomething\SomeotherDirectory\Blahblah\RootOfLongFileNames\LongSubdirectoryName1\...\VeryLongAndDescriptiveAndSpecificFilename.xls
---------------------------------------------------------------------^

そして、Windowsのパスが長すぎますXPで処理できません。

これらのファイルを読み取る方法に関するヒントはありますか?

パスをSUBST.EXEに置き換えてみてください。 Windowsに付属しています。

C:\Users\shufler>subst /?
Associates a path with a drive letter.

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

  drive1:        Specifies a virtual drive to which you want to assign a path.
  [drive2:]path  Specifies a physical drive and path you want to assign to
                 a virtual drive.
  /D             Deletes a substituted (virtual) drive.

Type SUBST with no parameters to display a list of current virtual drives.

あなたがしたいことは、チェーンの下のフォルダの1つをドライブ文字に置き換えます:

 C:\>subst X: Q:\Dir1\Dir2\ProjectA\FilesForSomething\SomeotherDirectory\Blahblah\RootOfLongFileNames\LongSubdirectoryName1

これで、X:ドライブのLongSubdirectoryName1フォルダーにアクセスできます。使い終わったら、subst X: /Dで置換を削除できます

これが常に必要な場合は、ログインスクリプトに追加します。

別のアプローチは、Q:がマップされている場所からチェーンのさらに下のドライブをマップすることです。

7
shufler

OSがアクセスするのに十分な名前になるまで、パス内のディレクトリ名を変更する必要があります。

名前を変更できる最初のフォルダに移動し、名前を1文字に変更してから、必要なファイルが見つかるまで、後続の各フォルダに対して同じことを行います。

構造を維持する必要性について:オペレーティングシステムで作業する必要がある制限があり、これらのパラメーターの外で日常的に操作することは好ましくありません。ここでの簡単な解決策は、将来的に再実行する必要があるパッチになるだけです。真の解決策は、この非常に長いフォルダーパス/ファイル名の問題が不要になるようにディレクトリ構造を再編成することです。

6
music2myear

パスの前に\\?\ を付けます。これはすべてのアプリで動作するわけではないことに注意してください。

1
kinokijuf

編集:元々はrobocopyを使用することを提案しましたが、もちろんこれはXPであり、プリインストールされていません。

「誰もが望むものを与える」ことができる方法はありません。ファイルパスが長すぎると、それを使用してファイル操作を実行できなくなります。私の見方では、いくつかのオプションがあります。

  1. 他の投稿の手順に従い、ディレクトリが短くなるまで名前を変更します。コンピューターの良い点は、スクリプトを作成してこれを行うだけでなく、元の名前が何であったかを追跡できることです。スクリプトを使用した場合でも、これには多少時間がかかります。

  2. Linux LiveCDを入手してください。それをコンピュータに入れ、そのCDから起動します。別のファイルシステムとして自動マウントされるWindowsディスクを確認します。必要なすべてのファイルを取得して、デスクトップの新しいフォルダーに配置します。そのフォルダーを圧縮して外付けハードドライブまたはUSBスティックに置くか、ネットワークドライブでファイルシステムへのコピーが許可されている場合は、最上位のディレクトリに移動します。

0
aqua