開発

Windowsのロングファイルパス制限を超えるフォルダを他のPCへコピーしたり、削除する方法

更新日:

ハイブリッドアプリなどの開発環境を構築するとやたら深い階層のフォルダが作られてしまうことがあります。

npmインストールでcordovaやionicをインストールした時に下記のような階層にファイルが作られました(実際はもっと深かったけど途中で省略しています)。

C:\Users\xxxxxxx\AppData\Roaming\npm\node_modules\ionic\node_modules\ionic-app-lib\node_modules\glob-watcher\node_modules\chokidar\node_modules\anymatch\node_modules\micromatch\node_modules\braces\node_modules\expand-range\node_modules\fill-range

普通に使っている分には問題ありませんが、何らかの理由で手動でコピーしようとしたり、移動しようとすると、ファイル名とパスを合わせて260文字という制限に引っかかってしまい、エラーが出たり、ファイルが抜けてしまったりします。

試行錯誤で他のPCへ深い階層のファイルをコピーした方法

別のPCに開発環境を作ろうとした時のこと、社内セキュリティの問題でnpmインストールが使えないという状況に陥ります。そこで既に動いているPCからファイルを丸ごとコピーして環境を作ることになりました。

ファイルは
C:\Users\ユーザー名\AppData\Roaming
の中にあるnpmフォルダです。デフォルトでは表示されないのでフォルダオプションから「隠しファイル、隠しフォルダー、および隠しドライブを表示する」を選択。

ローカル上だったらrobocopyを使えばいけるようですが、今回他のPCへサーバー経由でファイルを渡さなければなりません。

そこでLhaplusなどのツールでzip圧縮したファイルを別のPCにコピーして展開したところ、やはりファイルが足りないというエラーが発生。

確認してみると深い階層のフォルダやファイルが存在してません。ということでエラーが出た階層からさらにフォルダを圧縮して渡し、robocopyで展開したところ、何とか無事動かすことができました。

この時は元々入っていたツールのみで乗り切ったものの、手間がかかるし、あまり賢いやり方じゃないような気がします。

他のPCへ深い階層のファイルをコピーする効率的な方法

ググってみると7-Zipを使って圧縮すればロングファイルネームにも対応できるとあります。

しかし、会社のセキュリティは厳しく、自由にソフトをインストールさせてくれるほど甘くはありません。

前回試行錯誤した時もこの情報を掴みつつも7-Zipの使用は諦めていました。ところが、7-Zip Portableなるものの存在を発見。

試しにダウンロードしてexeファイルを実行してみると、デフォルトのインストール先はProgram Filesになっている…ダメ元でインストール先を自由に書き込みができるユーザーの中に変更してみると意外にもあっけなくインストール完了。

ファルダ内にあるそれらしいexeファイルを実行すると無事7-Zipを起動させることができました。試しに圧縮して解凍してみると深い階層のフォルダも無事残っています。

その後、別のPCでも7-Zip Portableを試してみるとインストール先は最初からユーザーになっていて、実行ファイルも「7-ZipPortable.exe」という分かりやすいものになっていました。どうやらダウロードした7-Zipが違うバージョンだったようです。

もっと早くこの方法に気付けばよかった。

深い階層のフォルダが消せなくなった場合

フォルダ削除

ローカル上であればゴミ箱にいれることを諦めて完全に削除すれば深い階層のフォルダでも丸ごと消すことができます。

ところがネットワーク上のファイルはエラーが出てしまって消すことができません。

ググってみるとネットワークドライブを割り当てることでパスを短くして削除するという方法が多くヒットしました。

この方法を試してみるも階層が深過ぎる場合、余程深くにネットワークドライブを割り当てないと削除することができず、今回はちょっと厳しかったです。

そこでとった方法はエクスプローラーで深い階層のフォルダを浅い階層に移動させてから消すという単純なもの。これをひたすら繰り返して無事全てのフォルダを削除することできました。

ネットワークドライブを割り当てるという手間もかからないのでこちらの方がお手軽です。

-開発
-

Copyright© Workerブログ|仕事を続けるための工夫 , 2020 All Rights Reserved Powered by STINGER.