treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

TIPS:パスが長くてコピーできない場合

今回はデータをコピーしようとして「パスが長すぎてコピーに失敗」の事例についてご報告します。

エラーメッセージはこんな風にでます。

f:id:treedown:20160821140627p:plain

「対象のパスが長すぎます。」と言うタイトルのウインドウで
「ファイル名の長さは、対象のフォルダーに対して長すぎる可能性があります。短いファイル名に変更して再実行するか、またはより短いパス名がある場所に移動してください。」
というメッセージが出ます。

こういう場合substコマンドで対処します。

subst使い方

とっても簡単です。ちょっとヘルプを見てみますか。
----------------------------------------------
SUBST [ドライブ1: [ドライブ2:]パス]
SUBST ドライブ1: /D

ドライブ1: パスを割り当てる仮想ドライブを指定します。
[ドライブ2:]パス 仮想ドライブに割り当てる物理ドライブとパスを指定します。
/D 置換した (仮想) ドライブを削除します。

現在の仮想ドライブ一覧を表示するときは、パラメーターを指定せずに SUBST と入力してください。
----------------------------------------------

要するにsubstコマンドにドライブレターを指定して、ドライブレターに置き換えるディレクトリパスを続けて指定すると、指定したドライブレターをあるフォルダパスに置き換えることができる、という仕組みです。

実際に使ってみます。

ざっくりとした使い方です。
動作確認用に「c:\temp\test\test\test\test\test\test\test\test\test\test」というフォルダを作ってみました。
図:エクスプローラで見ると…

f:id:treedown:20160821140715p:plain

図:コマンドプロンプトで見たところ

f:id:treedown:20160821140728p:plain

この長ったらしいフォルダをLドライブ「L:」に割り当ててみます。
以下のコマンドを実行

subst L: c:\temp\test\test\test\test\test\test\test\test\test\test

そうすると、Lドライブが生成されて、Lドライブは「c:\temp\test\test\test\test\test\test\test\test\test\test」へのパスとして使うことができるようになります。

図:コマンド実行

f:id:treedown:20160821140749p:plain

図:エクスプローラにLドライブ出現

f:id:treedown:20160821140759p:plain

LドライブはあくまでもCドライブ内のフォルダの一部なので、ドライブとしての情報はCドライブと同一になります。

パスが長すぎるエラーは、「c:\temp\test\test\test\test\test\test\test\test\test\test\テストファイル.txt」のフルパスが長すぎて取り扱えない、というエクスプローラの仕様を回避することができます。
要するに上記のパスで言えば、「L:\テストファイル.txt」と短縮することができるようになるので、パスが長すぎてファイルを取り扱えない、ということにならないようになります。

後始末&片付け

解除はとても簡単です。

subst L: /D

と実行すると割り当てていたドライブレターが消えます。

図:subst削除実行

f:id:treedown:20160821140814p:plain

図:エクスプローラの状態

f:id:treedown:20160821140827p:plain

substで自分のドライブ配下のフォルダにドライブレターを割り当ててローカルドライブとして利用できるとなると、イロイロ使えそうなところがあります。

簡単にパスを短くしたい、とか、簡単にドライブレターを割り当ててローカルドライブを一ドライブ作りたい、と言う場合にはsubstコマンドによるドライブレターの割り当てがお勧めです。