MENU

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

CATEGORY

大学 (85) 航空宇宙 (55) 写真 (25) 旅行 (14) 飯・酒 (11) コンピュータ (88) その他 (13)

TAG

ARCHIVE

2018 (92) 2017 (80) 2016 (0)

RECENT

【駅メモ】4年目に突入して,ようやく3000駅突破 【WebRTC】Raspberry Pi搭載ロボットをWebRTCで遠隔操作しようとして失敗した 【航空宇宙】航空宇宙アドベントカレンダー 始まります! 【Perl】YAPC::Tokyo 2019 のチケットを確保しました! 【カメラ】Canonから富士フイルムに乗り換えました

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

2017-04-13

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.関連記事

6.出典・参考サイト

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 (※公開されることはありません)

コメント