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
$