MENU

溶けかけてるうさぎ HP GALLERY BLOG TOP RECENT ARTICLES POPULAR ARTICLES ABOUT THIS BLOG

CATEGORY

大学 (140) 仕事 (17) 航空宇宙 (104) 写真 (77) 旅行 (32) 飯・酒 (17) コンピュータ (118) その他 (44)

TAG

ARCHIVE

RECENT

【カメラ】X100 シリーズが好きすぎる(主にリーフシャッタ) 【カメラ】X100V から X100VI に買い替えました 【自宅サーバー】Google Domains から Cloudflare にドメインを移管 【カメラ】FUJIFILM XF レンズのサイズ比較ができるようにしてみた 【写真】自作写真閲覧ページにてフィルムシミュレーションで写真をフィルタできるようにした

【bat】バッチファイルでのネットワークドライブの割当と,net use / subst の違い

事象発生日:2017-04-13

記事公開日:-

アクセス数:227290

SMB/CIFSなどでのNASの共有フォルダをPC(マイコンピュータ)にマウントするバッチファイルを書いた.

また,そのときに気になった,net usesubstについての違いもまとめる.

1.実行環境

Microsoft Windows 10 Home (64bit)

2.ネットワークドライブの割当

以下のバッチファイルで,ネットワーク上の共有フォルダをV,Wドライブとして割り当てることができ,PC(マイコンピュータ)よりアクセス可能となる.

@echo off

set VER=1.1.0

title nas4.bat Ver %VER%

set DRIVE_LETTER_1=V
set DRIVE_LETTER_2=W
set PATH_1=${network_path1(\\nas\share など)}
set PATH_2=${network_path2(\\nas\temp  など)}

echo ネットワークドライブの割当を実行します.
echo.

if exist %DRIVE_LETTER_1%:\ (
	echo %DRIVE_LETTER_1%:\ はすでに使用されています.
	rem goto End
) else (
	net use %DRIVE_LETTER_1%: %PATH_1%
	if not "%ERRORLEVEL%" == "0" (
		echo 予期せぬエラーが発生しました.
		rem goto End
	)
)
if exist %DRIVE_LETTER_2%:\ (
	echo %DRIVE_LETTER_2%:\ はすでに使用されています.
	rem goto End
) else (
	net use %DRIVE_LETTER_2%: %PATH_2%
	if not "%ERRORLEVEL%" == "0" (
		echo 予期せぬエラーが発生しました.
		rem goto End
	)
)


:End

echo.
echo スクリプトを終了します.
echo 何かキーを押してください...
pause >nul
ネットワークドライブの割当
@echo off

set VER=1.1.0

title nas4-d.bat Ver %VER%

set DRIVE_LETTER_1=V
set DRIVE_LETTER_2=W

echo ネットワークドライブの割当を解除します.
echo.

if not exist %DRIVE_LETTER_1%:\ (
	echo %DRIVE_LETTER_1%:\ にはネットワークドライブは割り当てられていません.
	rem goto End
) else (
	net use %DRIVE_LETTER_1%: /delete
	if not "%ERRORLEVEL%" == "0" (
		echo 予期せぬエラーが発生しました.
		rem goto End
	)
)
if not exist %DRIVE_LETTER_2%:\ (
	echo %DRIVE_LETTER_2%:\ にはネットワークドライブは割り当てられていません.
	rem goto End
) else (
	net use %DRIVE_LETTER_2%: /delete
	if not "%ERRORLEVEL%" == "0" (
		echo 予期せぬエラーが発生しました.
		rem goto End
	)
)


:End

echo.
echo スクリプトを終了します.
echo 何かキーを押してください...
pause >nul
ネットワークドライブの割当を解除

3.net use / subst の違い

Microsoft TechNetのリファレンス(,)によると,

Net use

Connects a computer to or disconnects a computer from a shared resource, or displays information about computer connections. The command also controls persistent net connections. Used without parameters, net use retrieves a list of network connections.

Subst

Associates a path with a drive letter. If used without parameters, subst displays the names of the virtual drives in effect.

とある.

 

net useで割り当てた場合は,再起動しても割当は保存されるが,substの場合,ログインする度に割り当て直す必要がある.

 

また,リファレンスにもあるように,substはパスをドライブに割り当てるのに対し,net useは共有リソースをドライブに割り当てる.そのため,substではローカル,ネットワークともに割当可能だが,net useではネットワークのみ可能である.

ためしにローカル,ネットワークそれぞれについてコマンドを実行してみた結果が以下である.

C:\>subst S: C:\Users

C:\>subst T: \\${network_address}\share

C:\>net use U: C:\Users
システム エラー 67 が発生しました。

ネットワーク名が見つかりません。


C:\>net use V: \\${network_address}\share
コマンドは正常に終了しました。


C:\>subst /d S:

C:\>subst /d T:

C:\>net use U: /delete
ネットワーク接続が見つかりませんでした。

NET HELPMSG 2250 と入力すると、より詳しい説明が得られます。


C:\>net use V: /delete
V: が削除されました。
実行したコマンド
割当コマンド実行前のPC
割当コマンド実行後のPC

net useではローカルへの割当ができていないことがわかる.

さらに上の画像を見ると,subst(Vドライブ)では共有リソースの詳細が表示されているが,subst(Tドライブ)では"切断したネットワーク ドライブ"となってしまっている.この状態でも共有フォルダにアクセス可能だが,少し気持ち悪い.

 

もう一点,重要な違いがある.

共有リソースへアクセスする場合,によると

リモートのサーバーに接続するためには資格情報が一致していないといけないし、デフォルトでは現在のログオン(サインイン)に利用している資格情報が使われるという事情がある。

とあるように,現在のuser/pwによって認証が行われる.

仮にNAS側にローカル側のユーザーが登録されていない場合,先程のコマンドを実行すると以下のようになる.

C:\>subst S:  \\${network_address}\share
パスが見つかりません - \\${network_address}\share

C:\>net use Z: \\${network_address}\share
\\${network_address}\share のパスワードが無効です。

'${network_address}' のユーザー名を入力してください:
${network_address} のパスワードを入力してください:
コマンドは正常に終了しました。

C:\>subst T:  \\${network_address}\share

このように,net useではここで認証を行うことができる.

なお,substでも,net useやエクスプローラで共有リソースにアクセスし,認証させた後であれば割当可能となる.

4.バッチファイルのTips

最後に,よくミスるので,バッチファイルのTipsを一つ書き残しておく.

setによる変数代入の際は,=前後にスペースを入れないようにすること.

詳細は以下の実行結果を参照.

C:\>set VAR = hoge

C:\>echo aa%VAR%bb
aa%VAR%bb

C:\>echo aa%VAR %bb
aa hogebb

C:\>set VAR=hoge

C:\>echo aa%VAR%bb
aahogebb

C:\>set VAR="hoge"

C:\>echo aa%VAR%bb
aa"hoge"bb

5.出典・参考サイト

Microsoft TechNet. Net use. Retrieved April 18, 2017, from https://technet.microsoft.com/en-us/library/gg651155.aspx
Microsoft TechNet. Subst. Retrieved April 18, 2017, from https://technet.microsoft.com/en-us/library/cc726014(v=ws.11).aspx
@IT. Windowsネットワークの基礎:第2回 ファイル共有の使い方 (2/2). Retrieved April 18, 2017, from http://www.atmarkit.co.jp/ait/articles/1406/12/news097_2.html

関連記事

コメントを投稿

名前

Email (※公開されることはありません)

コメント