今回は、ファイルサーバー等でBATを実行したり、コマンドプロンプトをネットワーク上で開いたりした際に出てくる
「CMD では UNC パスは現在のディレクトリとしてサポートされません。」
の原因や対処方法を紹介します。
主にWindowsコマンドの「net use」を利用した対処方法です♪
エラーの原因は?どんな状況で発生する?
例えば、ネットワーク上でBATを起動すると以下のようなメッセージがでます。
(dirコマンドを実行)
'\2.???.???.???\Users'
上記の現在のディレクトリで CMD.EXE を開始しました。
UNC パスはサポートされません。Windows ディレクトリを既定で使用します。
ドライブ C のボリューム ラベルは Windows です
ボリューム シリアル番号は ????-???? です
C:\Windows のディレクトリ
2020/04/22 17:33 <DIR> .
2020/04/22 17:33 <DIR> ..
2019/03/19 13:52 <DIR> addins
...
「UNC パスはサポートされません」と出てしまい、かつ、
本来ならば「\\192.???.???.???\Users」のディレクトリを表示させたいところですが、カレントディレクトリを「C:\Windows」とみなしているため、「C:\Windows のディレクトリ」一覧を表示しています。
エラー原因としては、
コマンドラインではUNCパスをサポートしていないことです。
なので、今回だと自動的に「C:\Windows」をカレントディレクトリとして扱ってしまっています。
※UNC [Universal Naming Convention] パスとは、
「\\192.???.???.???\Users」のようにWindowsネットワーク上で共有されているファイルやフォルダなどの位置を指し示すパスのこと。
対処方法としては、
ファイルサーバなど共有フォルダへアクセスしたい場合、
ローカルドライブへネットワークドライブを割り当てる方法があります。
割り当て方法としては、以下の方法が考えられます。
1.net use コマンド
net use z: \2.???.???.???\Users
~ zドライブを使用して処理 ~
net use z: /delete
詳細は次項にて。
2.substコマンド
SUBST z: \2.???.???.???\Users
~ zドライブを使用して処理 ~
SUBST z: /D
3.パソコンにネットワークドライブの割り当てを直接設定
・デスクトップに「ネットワーク」のショートカットあれば右クリック、
なければ、適当なフォルダを開き、
左欄をスクロールし、一番下らへんにある「ネットワーク」を右クリック
・「ネットワーク ドライブの割り当て」をクリック
・ドライブ指定
1~3の手段があり、どれを使ったらいいかですが、
パスワード設定等でき、汎用性のある「1.net use コマンド」がおすすめです。
逆に、簡単にできるので考え方次第ですが、
パソコンの設定に依存する「3.パソコンにネットワークドライブの割り当てを直接設定」はあまり良い手段じゃないと思います。
対処方法について(net useコマンド)
基本的には以下のように使用しますが、
本項ではもう少し踏み込んで、net useコマンドの使い方についての詳細を紹介します。
net use z: \2.???.???.???\Users
~ zドライブを使用して処理 ~
net use z: /delete
net use 構文
- net use [ デバイス名 | * ] [ \\コンピュータ名\共有名 [ \ボリューム ] [ パスワード | * ] ][ /USER : [ ドメイン名\ ] ユーザー名 ][ [ /DELETE ] | [/PERSISTENT : {YES | NO} ] ]
- net use [ デバイス名 | * ] [ パスワード | * ] [ /HOME ]
- net use [ /PERSISTENT : {YES | NO} ]
オプション
オプション | 説明 |
---|---|
(なし) | 現在設定しているネットワークドライブの一覧を表示します。 |
/user | 接続するためのユーザ名を指定します。[]は任意で以下のように設定します。 ・/user:[ドメイン名\]ユーザ名 ・/user:[完全修飾ドメイン名\]ユーザ名 ・/user:ユーザ名@完全修飾ドメイン名 |
/home | ユーザーのホーム ディレクトリに接続する。 |
/smartcard | スマートカードの情報を利用して接続する。 |
/savecred | 入力したユーザとパスワードを保存する。 |
/requireintegrity | 共有への署名付き接続を要求する。 |
/requireprivacy | 共有へ暗号化された接続を要求する。 |
/presistent | 次回以降自動的に接続するか、設定します。 yes : 接続を保存し、次回ログオン時に再接続する。 no : 次回ログオン時に再接続しない。 |
ネットワークドライブの一覧を表示
net useコマンドで現在設定しているネットワークドライブの一覧を表示させます。
c:\Users> net use
ステータス ローカル名 リモート名 ネットワーク名
-------------------------------------------------------------------------------
OK \2.???.???.???\IPC$ Microsoft Windows Network
コマンドは正常に終了しました。
ネットワークドライブに割り当てる
net use [ドライブ | *] [パス] [パスワード] /user:[ユーザー]
ネットワークドライブに指定したパスを割り当てます。
・[password] : パスワード
・[user-name] : ユーザ名
zドライブに「\\192.???.???.???\Users」のフォルダを割り当てた後、
net useコマンドでzドライブへ設定されていることが確認できます。
C:\Users>net use z: \2.???.???.???\Users [password] /user:[user-name]
コマンドは正常に終了しました。
C:\Users>net use
新しい接続は記憶されます。
ステータス ローカル名 リモート名 ネットワーク名
-------------------------------------------------------------------------------
OK Z: \2.???.???.???\Users Microsoft Windows Network
OK \2.???.???.???\IPC$ Microsoft Windows Network
コマンドは正常に終了しました。
・ドメイン名を指定する
ドメイン名を指定する場合はこのように指定します。
・[password] : パスワード
・[domain] : ドメイン名
・[user-name] : ユーザ名
C:\Users>net use z: \2.???.???.???\Users [password] /user:[domain]\[user-name]
・パスワード入力を促す
BATに記述する場合など、パスワードを指定したくない場合は
このように指定すると、実行時にユーザに問い合わせることもできます。
・[user-name] : ユーザ名
C:\Users>net use * \2.???.???.???\Users * /user:[user-name]
\2.???.???.???\Users のパスワードを入力してください:
ドライブ Z: は現在 \2.???.???.???\Users に接続されています。
コマンドは正常に終了しました。
今回はドライブ名も*で記述して、
空いているドライブに自動的に割り当てています。
ネットワークドライブの設定を削除する
net use [ドライブ | *] /delete コマンドで、ネットワークドライブの設定を削除します。
先ほど設定したzドライブを削除し、
net useコマンドで一覧から削除されていることが確認できます。
net use * /delete とすると、
全てのネットワークドライブの接続を解除してしまうので、注意が必要です。
※ コマンド実行後、操作を続行しますか?と確認メッセージが出力されます。
C:\Users>net use z: /delete
z: が削除されました。
C:\Users>net use
新しい接続は記憶されます。
ステータス ローカル名 リモート名 ネットワーク名
-------------------------------------------------------------------------------
OK \2.???.???.???\IPC$ Microsoft Windows Network
コマンドは正常に終了しました。