この質問にはすでに答えがあります:
私の妻にはいくつかのファイルとフォルダーがあり、それらは通常の方法またはコマンドラインを使用して削除できない(削除できない)ファイル名になっています。フォルダー構造の深さのため、ファイル名が長すぎると思います。このようなファイルをクリーンアップするための優れたユーティリティを知っている人はいますか?
CTRL
DELETE
この質問にはすでに答えがあります:
私の妻にはいくつかのファイルとフォルダーがあり、それらは通常の方法またはコマンドラインを使用して削除できない(削除できない)ファイル名になっています。フォルダー構造の深さのため、ファイル名が長すぎると思います。このようなファイルをクリーンアップするための優れたユーティリティを知っている人はいますか?
CTRL
DELETE
回答:
ディレクトリを完全に削除し、長いパスが含まれrobocopy
ている場合、非常に良い仕事をします:
mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete
これは、robocopyが内部的にUnicode対応バージョンのWin32関数\\?\
とファイルパスのプレフィックスを使用するために機能します。これらの関数には、259文字ではなく2¹⁶-1(32,767)文字の制限があります。
すべてのファイルを削除するには、このプロセスを複数回実行する必要がある場合があります。
コマンドプロンプトから:
dir /X
これにより、ファイル/フォルダーが短い名前の形式でリストされます。次に、ファイルを削除するために記述されたとおりに短い名前を使用します。
del LONGF~1.txt
dir
またはを使用できませんcd ..
。
dir
使用できない場合pushd
。それは私のために働いた。
私はプログレッシブリーでパスに進み、連続する各親フォルダーの名前を「1」に変更して削除しようとします。毎回パスを効果的に短縮しており、ディレクトリ構造全体を最終的に削除できるようになるまで(これは必要な場合とそうでない場合があります)、4つまたは5つ以上のディレクトリで作業する必要はありませんでした。同様に最後の子フォルダーからこれを行い、上下に作業することができます。
mv * 1 && cd 1
。これは、ディレクトリに複数のファイルがある場合は機能しませんでしたが、その時点でrm -rf *
通常はうまくいきました。
何かを移動、コピー、または削除するために「フルパスとファイル名」の長さの制限を回避するために使用したトリックは、フォルダーを指すマップされたドライブ文字を使用して途中まで(またはそれ以上)侵入することで短くすることです道を下る。
したがって、c:\ some \ long \ path ... \ and \ foo \ bar \ folders \ oldfiles \ myoldfile.txtがあります。
次に、パスの最初のチャンクが数文字の長さになるように、任意のドライブ文字をパスに沿ったどこかにマップします。前提条件-フォルダーは共有フォルダー(サーバー上にある場合は既に存在している可能性があり、これを行う必要がある場所)に存在する必要があります。それを共有します。環境とパラノイアのレベルに応じて、NTFSのアクセス許可が合理的に制限されている限り、すべてのユーザーが共有へのアクセスを変更できるようにします。必要に応じて、自分のアカウントにのみ変更権限を許可してください。
次に、共有フォルダーまたはその中の1つに移動して共有するか、次のようにコマンドラインを使用します。フォルダー「foo」を「fooshare」として共有するとします。
net use x: \\mycomputername\fooshare\bar\folders /persistent:no
X:ドライブはその共有内のフォルダー「folders」を直接指すようになったため、「x:\ oldfiles \ myoldfile.txt」はかなり短くなりました。
(「/ persistent:no」は、これが次回の再起動に耐えられず、後で混乱することを意味します。完了したら、フォルダの共有を解除することを忘れないでください。)
それはあなただけマッピングすることができ、共有フォルダ内にすでにある場合は、必ずファイルを含むフォルダを共有する必要はありませんが、覚えておいてくださいを通じて共有し、ターゲットフォルダにネストされたフォルダ近いファイルに、それが正常に動作します。
ユーザーがフォルダー構造のかなり深い場所にドライブをマップし、そこから255文字を使用できることに気付いたときに、2つのサーバー間で大規模なロボコピーを行うこの手法を使用する必要がありましたが、合計ファイルパス長を超えていましたローカルドライブルートからアクセスした場合。
subst x: C:\Some\first\part\of\the\long\path
その後、ドライブを削除しますsubst x: /d
subst
トリックは、ファイル名がドライブのルートであっても260文字を超えるほど長くない限り、うまく機能するようです。
net use
あなたは、デフォルトの管理共有を使用することができ、:net use x: \\localhost\c$\bar\folders /persistent:no
私が見つけた最も簡単な方法は、ubuntuライブCDから起動することです。
別の方法として、パスの途中で共有フォルダーを作成し、ネットワークドライブをそのフォルダーにマップし、マップされたフォルダーから削除を実行できます(同じマシン上であっても)
ファイルを別の場所でカット/ペーストするディレクトリの名前を変更してから、削除します。ここで動作します。
または、トラブルを経験したくない場合は、コマンドプロンプトからのみ。
node_modules
フォルダーでした)、デスクトップにドラッグして削除します。一度にいくつかのフォルダを移動しながら、すすいで繰り返します。なんという厄介な問題。
おそらく最善の方法ではなく、私は他の人が何を思い付くのかを見ることに興味があります-
私はこれを一度持って、私は運なしでいくつかのことを試しました。良いツールを探すのではなく、Windowsディスクを再起動し、回復コンソールに移動して、そこから削除しました。初めて働いて、本当にうまくいきました!
また、ちょうどあなたのためにGoogleをして、これを見つけました-DelinvFileは良さそうに見えますが、それを保証することはできません。
編集-警告、上記はただの試用に過ぎない-たぶん私が最初に思ったほど良くない!