2009-12-03 19:23:09 +0000 2009-12-03 19:23:09 +0000
387
387

通常の削除ではパス/名前が長すぎるディレクトリを削除する方法

Windows は削除しようとするときにファイル名の長さに制限があるようですが、それらのファイルが作成されるのを防ぐことはできません。私たちの ant スクリプトはクリーンアップを行うときにそれらを削除することができますが、時々、実際に ant から完全なクリーンアップを行わずに workarea ディレクトリ (すべての一時ファイルがある場所) を削除する必要があります。

これは同じエラー この質問 ですが、ファイルではなくディレクトリを扱っていて、どの特定のファイルやサブディレクトリが問題の原因になっているかを常に把握しているわけではないので、そこでの回答は私にとって本当に機能しません。そして私は実際にそれらを削除するために手動プロセスを(単一のコマンドを誘発する以外)避けることを試みている。

私がエクスプローラーからのディレクトリを削除しようとすれば私はエラー

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

powershellのRemove-Itemを試みることは次のエラーを与える:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item <<<< -force -Recurse <directory>

誰でも手動で問題のファイルを見つけ、それらを移動するか、または名前を付けなくても、この削除エラーを回避するために任意のツールまたは容易な方法を知っているか。

回答 (23)

432
432
432
2009-12-03 19:48:56 +0000

7-Zip](http://www.7-zip.org/)ファイルマネージャを使用して削除してください。

それでも問題がある場合は、7-Zipファイルマネージャ内でShift+削除を利用することを確認してください。そうしないと、Windowsはそれらをごみ箱に移動しようとします(これは再び失敗します)。

311
311
311
2014-07-04 06:23:55 +0000

ここにある他の(フリーの)回答はどれも私には効きませんでしたが、別のサイトで見つけました:

rimraf <dir>

rimraf Node.js パッケージなので、 npm を含む Node.js をインストールする必要があります。そして、次のように実行します:

npm install -g rimraf

その後、コマンドラインから rimraf を実行します。

私がこの解決策を見つけたのは、npm 自体が依存関係をネストする方法のためにこの問題を引き起こしていたからです。

155
155
155
2016-03-03 16:45:54 +0000

この問題を解決するためには、プログラムをインストールする必要はありません。

この問題は、2006年に発売されたWindows Vistaからプリインストールされているrobocopyを使用することで簡単に解決することができます。7zipなどのサードパーティ製ツールを使う必要はありません。Powershellはやりすぎです。Cygwinは動くかもしれませんが、インストールされていないかもしれません。そこで、rmdir /S /Q <dir>

  1. robocopyを使って、 をコピー+更新したものを
  2. 新しい空のフォルダから
  3. 削除したいフォルダにコピー&更新したものを

  4. robocopyを実行すると、ターゲットディレクトリも空になってしまいます。Windows で検索を開き、robocopy と入力して Enter キーを押すだけです。

削除対象のtarget

C:\delete\this folder\with a very long name

とします。最初に空のディレクトリ、f.i. cmdを作成します。2. オプションを使用して空のディレクトリからターゲットへのCopy+update、 C:\emptyfolder

  1. 空のディレクトリを削除します。もう必要ありません。

ソースディレクトリ(/purge)にファイルやフォルダがないので、単にターゲットディレクトリ(C:\emptyfolder)の下のファイルやフォルダを再帰的に削除します!

  • 最後のコツ:手書きを避けることができます

気をつけてください . 削除されたファイルは、ゴミ箱フォルダには移動しません! 一度削除されたファイルは復元できません。

( “パスが長すぎる? Use Robocopy” by BVLANGEN からの引用)

PS: 私はこの答えがここにあったことを実感しています、あまり教訓的ではありません。Windowsでファイル名が長すぎるファイルを削除するには?重複]](https://superuser.com/a/467814/43193) Benoit added:

すべてのファイルを削除するには、このプロセスを複数回行う必要があるかもしれません。

86
86
86
2009-12-03 19:24:08 +0000

cmdから物を削除する方法を見つけたと思います。元々はdelコマンドを試してみたのですが、うまくいきませんでした。そこで私はrmdirを思い出しました。以下のように

rmdir /S /Q <dir>

を実行するとうまくいったようです。

30
30
30
2014-11-25 20:22:32 +0000

この問題が発生したときに使用したツールは、 FastCopy です。ドロップダウンからDelete Allを選択し、削除したいディレクトリを選択してDelete Allをクリックしました。

FastCopyはポータブル(インストール不要)で、32ビット版と64ビット版があります。

26
26
26
2014-09-26 19:40:05 +0000

Cygwinのrm -rfはロングパスでも活躍してくれます!

26
26
26
2014-10-28 06:09:34 +0000

追加のソフトウェアをインストールしなくても、substコマンドを使用して、長い名前のディレクトリに一時的にエイリアスを作成することができます。一時的なドライブ文字の別名を取除くためには命令

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"
``` を使用して下さい
22
22
22
2011-04-22 16:00:01 +0000

以下のようにPowershellからコマンドに落として実行するだけです。

Cmd /C "rmdir /S /Q <dir>"
18
18
18
2015-06-25 14:19:53 +0000

Dentrasiのソリューション が私にとって一番うまくいったのですが、具体的な手順をトップレベルの回答に掲載したいと思いました。7zip ](http://www.7-zip.org/download.html)の最新の安定版をダウンロードしてインストールしてください。7zipファイルマネージャ( 7zfm.exe )を実行してください。7zip ファイルマネージャでは、削除したいフォルダの名前を見ることができるようにナビゲートしてください(すなわち、親フォルダにいます)。 4. Shift ボタンを押したままにしてください。 5. キーボード上または 7zip ファイルマネージャのツールバーにある"Delete“ボタンをクリックしてください。OK_」ボタンをクリックしてください。

12
12
12
2016-09-09 10:52:17 +0000

既出の解答ではまだ触れられていないことが2つあります。

  1. ロングパスにアクセスするために拡張長のパス接頭辞を使用することができます
  2. Windows 10では、一般的な使用のためにロングパスのサポートを有効にすることができます - ただし、すべてのアプリケーションがロングパスで動作するわけではないことに注意してください、あなたは古いソフトウェアをテストする必要があります。ただし、すべてのアプリケーションがロングパスで動作するわけではありませんので、古いソフトウェアをテストする必要があります。

Long Path Prefix

Windows API には、32k 文字までの Unicode パス名をサポートする特別な機能があります (各要素の長さは 255 文字まで)。

これはしばしばUNCの命名と呼ばれるように誤って呼ばれますが、それは関連しているけれどもそうではありません。これを長いパス接頭辞と組み合わせることができます: `\?既出の解答ではまだ触れられていないことが2つあります。

  1. ロングパスにアクセスするために拡張長のパス接頭辞を使用することができます
  2. Windows 10では、一般的な使用のためにロングパスのサポートを有効にすることができます - ただし、すべてのアプリケーションがロングパスで動作するわけではないことに注意してください、あなたは古いソフトウェアをテストする必要があります。ただし、すべてのアプリケーションがロングパスで動作するわけではありませんので、古いソフトウェアをテストする必要があります。

Long Path Prefix

Windows API には、32k 文字までの Unicode パス名をサポートする特別な機能があります (各要素の長さは 255 文字まで)。

これはしばしばUNCの命名と呼ばれるように誤って呼ばれますが、それは関連しているけれどもそうではありません。これを長いパス接頭辞と組み合わせることができます:

いくつかの、貧弱に書かれていますが、悲しいことに非常に一般的なアプリケーションは、UNC ファイルパスも長いパス接頭辞もサポートしていないことに注意してください。 https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

ロングパスのサポート

これは最近の Windows 10 に追加されたオプションです。特定のアプリケーションのサポートが必要なため、執筆時点ではデフォルトでは有効化されていません。興味深いことに、PowerShellはサポートが組み込まれているので、このオプションを有効にすると、長いパスが直接PowerShellスクリプトで使用できるようになります。

Windowsのバージョンを持っている場合は、グループポリシーエディタを介して有効にすることができます。または、単に次のレジストリの変更を使用することができます。いつものように、何かをする前に変更するレジストリのセクションをバックアップしてください。

  1. \servername\path name\file nameを実行します。
  2. UACプロンプトを確認します。キーに移動します。5.存在しない場合は、 Policies を右クリックし、メニューから New > Dword (32 ビット) Value を選択します。これには、Windows Store アプリも含まれます。 https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

UPDATE 2017-04-09

@maoizmさんが上記のレジストリキーの問題を指摘していたので、 もう少し調べて をしてみました。これで、システムキーで長いファイル名のサポートを設定できるようになったようです:

\?\D:\very long path

これはまだそれを使用するように特別に設定されているアプリケーションでのみ動作します(アプリケーションのマニフェスト.xmlのエントリが必要です)。

8
8
8
2014-10-28 05:52:15 +0000

私はcmdの解決策が好きです。私はエクスプローラだけで動作する別の回避策を共有したいが:削除する前に親フォルダの名前を短縮してみてください:短い名前は、パスを短縮します。言う、あなたは、フォルダのこのツリー構造を持っている:&002&002 C:\&002&002 …プロジェクト&002&002 … … 2014年春の間のある素晴らしいプロジェクト

…. … . 都市の公園のいくつかの活動金曜日

…….. …….. Bla bla bla bla bla bla bla bla bla bla bla bla bla

…….. . 実際に長い名前のファイルも

この場合、フォルダを削除することはできませんし、ファイルの削除や名前の変更もできません。全体のフォルダ構造やその一部を削除したい場合は、一時的に親フォルダの名前を変更してパスを短くしてから、フォルダを削除することができます。名前はちょうど手紙である場合もあります:

C:\

… プロジェクト

… … x

… … … y

… … … … z

… … … … … 続きを読む 長い名前を持つ実際のファイル、あまりにも

私の場合、私はちょうど多くのサブフォルダとファイルを持つフォルダ全体を削除したいと思いました。なので、フォルダ名は気にしていませんでした。

7
7
7
2016-01-11 14:22:54 +0000

7-zip での解決策はとても有効です。git をインストールしている場合は、bash シェルを開いて次のようにします:

rm -f

(フォルダの場合は rm -rf)

4
4
4
2014-04-29 15:47:23 +0000

私は Total Commander (シェアウェアですが、試用期間後も最低限の起動画面だけで動作し続けます) をお勧めします。これは私がいつもtoo long filenameの問題を解決する方法です。

2
2
2
2015-02-08 21:07:55 +0000

ロボコピーを使ってファイルを削除する簡単なjavaプログラムを作ってみました。jarは実行可能なものです。追加の出力は、cmdラインから実行してください。 https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view?usp=sharing

2
2
2
2010-11-06 16:24:27 +0000

また、同等の短縮名を使って削除することもできますが、dir /xで表示されます。

1
1
1
2013-12-20 06:10:00 +0000

他の回答をすべて試してみましたが、(少なくとも私のために)動作しませんでした。

私は delinfile に出くわしましたが、非常にうまく、かなり迅速に動作しました!

試用版は3つのアクション/15日間に制限されていますが、それはあなたがいくつかのフォルダ/ファイルを削除したい場合にのみ使用することができます:

1
1
1
2017-10-28 00:35:26 +0000

ここで完璧な答えを得ました(ファイル用)。Windows 10で動作します。

REM Make sure there is no \ at the end of either path!
robocopy "C:\...\...\...\long\path" "C:\DeleteMe" "FileName" /MOV
REM Note: this ^ can be called many times before...:

REM Finally, recursively delete the higher up DeleteMe directory.
rmdir /S /Q DeleteMe

も参照してください。https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath ](https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath)

4つの質問の中の単一の代替回答は私のニーズに十分ではありませんでした。あなたは歓迎されている世界です。

1
1
1
2017-01-09 12:08:22 +0000

  • ダウンロード
  • [既存のディレクトリを削除するために、RemoveDirectoryW を使った再帰的な呼び出しを使用します
  • 新しく作成されたディレクトリには独自のファイルリポジトリを使用します
  • 接続するディレクトリを削除する前に、ディレクトリからファイルを移動することができます。
  • ネストされたディレクトリごとにディレクトリの先頭への移動がクリックになりますが、スピーディーです
  • Windows XP(SP3)以上で動作します
  • インストーラのないアンマネージドコードのため、デスクトップなどの予備フォルダから実行すると Smartscreen の警告が出る可能性があります。
1
1
1
2017-06-13 07:52:13 +0000

私はWindows10でこの問題に直面し、この簡単な解決策を見つけました。フォルダツリーの少し奥に入ります。2.アドレスバーを使用して、ツリーのどこかの真ん中からどこかの始まりにフォルダをドラッグ&ドロップします。画像のように、赤枠から緑枠へドラッグ&ドロップします。(この場合はパスが短くなりますが、長いパスでも問題ありません) 4. 4.パスが短くなり、削除キーを使って通常通り削除します。

0
0
0
2015-06-25 16:47:36 +0000

私は最終的にPowershellを介してこれを行う方法を見つけました。以下は、Windows 7で動作するようにするために私が従った手順です:

  1. 新しいフォルダを作成する NTFSSecurity という名前のフォルダをC:\Users\XXXX\XXXXDocuments\WindowsPowerShell\Modules\NTFSSecurity, ここで XXXX はあなたのWindowsユーザー名です。例: 私のユーザー名が「aspnyc」であったら、新しいホールダーはC:Aussers\aspnyc\Documents\WindowsPowerShell\Modules\NTFSSecurityC.である

  2. File System Security PowerShell Module packageをダウンロードしてください。Powershell コンソールを開き、Get-Module -ListAvailable を実行し、NTFSSecurity が登録モジュールのリストのどこかに表示されていることを確認します。

  3. Powershell コンソールで Import-Module NTFSSecurity を実行します。Powershell コンソールで Remove-Item2 “YYYY” -Recurse を実行します。

0
0
0
2015-10-09 16:08:22 +0000

Windows 10で個々のファイル名が長すぎる場合に、Powershellでこれを行う方法をやっと見つけました。以下は、Windows 10 で動作するようにするために私が従った手順です:

  1. File System Security PowerShell Module package](https://ntfssecurity.codeplex.com)をダウンロードしてください。ZipファイルをフォルダNTFSSecurityとして解凍してください。管理者権限でPowershellコンソールを開き、**Get-Module -ListAvailableを実行し、NTFSSecurityが登録されたモジュールのリストのどこかに表示されていることを確認します。Set-ExecutionPolicy Unrestrictedを実行して、署名付き実行モードをバイパスします。5.最終的に削除したいフォルダに cd します。Powershell コンソールで Remove-Item2 “YYYY” -Recurse を実行します。うまくいったかどうか確認してください。結局、Set-ExecutionPolicy Restrictedで署名付き実行モードに戻します。この動作をY(es)で確認してください。
0
0
0
2019-07-16 21:25:40 +0000

WinRARでディレクトリに移動し、ファイルを選択し、F2を押し、ファイル名を短い名前に変更します。その後、いつものようにファイルを削除することができます。https://www.youtube.com/watch?v=qQTyTprFAOg ](https://www.youtube.com/watch?v=qQTyTprFAOg)

0
0
0
2017-07-05 10:44:55 +0000

Windows上のUbuntuでBashをインストールしている場合、通常のコマンドプロンプトで親ディレクトリにcdして、次のように入力します:

bash -c "rm -rf dirname_here"

これはbashを起動し、ファイル名の制限がないlinuxから再帰的にディレクトリを削除して、通常のコマンドプロンプトに戻ります。