1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsのコマンドプロンプトbatで「UNC パスは現在のディレクトリとしてサポートされません」対応バッチ例

1
Posted at

Windowsのバッチをテストしてたら、、

C:\>cd \\localhost\tst
'\\localhost\tst'
CMD では UNC パスは現在のディレクトリとしてサポートされません。

どうしよう( ゚Д゚)

対処

pushdが便利です。

bat_skeleton.bat
@echo off

cls

pushd "%~dp0"

rem 何か処理を記述

pause

popd

挙動

自動でnet use z: /persistent:noみたいな感じで、一時的にドライブレターを振って接続してくれます。
そのウインドウを正常に閉じるとnet use z: /dを自動でしてくれる感じです。
任意のタイミングで接続を切る場合はpopdとなります。
×閉じした場合などは再起動までnet useが残存するので、明示的にpopdした方が良い感じです。

参考

Windowsのパスの書き方は3つあります。

  • 従来の DOS パス(z:\tstなど。基本はこれ)
  • UNC パス(\\localhost\tstなど。ネットワーク越しの場合これ)
  • DOS デバイス パス(\\.\z:\tstなど。ドライブレター26で不足する場合はこれ)

限界

ドライブレターの空きが無くなるとNGです。

C:\>pushd \\localhost\tst

Z:\>pushd \\localhost\tst

Y:\>pushd \\localhost\tst

X:\>pushd \\localhost\tst

W:\>pushd \\localhost\tst

V:\>pushd \\localhost\tst

U:\>pushd \\localhost\tst

R:\>pushd \\localhost\tst

Q:\>pushd \\localhost\tst

P:\>pushd \\localhost\tst

O:\>pushd \\localhost\tst

N:\>pushd \\localhost\tst

M:\>pushd \\localhost\tst

L:\>pushd \\localhost\tst

K:\>pushd \\localhost\tst

J:\>pushd \\localhost\tst

I:\>pushd \\localhost\tst

H:\>pushd \\localhost\tst

G:\>pushd \\localhost\tst

B:\>pushd \\localhost\tst
' '
CMD では UNC パスは現在のディレクトリとしてサポートされません。

別解

PowerShellなら問題ない感じです

B:\>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

user@pc:\
$ cd \\localhost\tst
user@pc:Microsoft.PowerShell.Core\FileSystem\\localhost\tst
$
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?