【bat】バッチファイルでネットワークドライブを割り当てる


##概要
SMB/CIFSなどでのファイルサーバーやNASの共有フォルダをPCにマウントするバッチファイルと起動時に自動的にマウントする方法を書きました。

##目次
1. そもそもファイルサーバーとは？
2. 実行環境
3. ネットワークドライブの割り当て
4. ドライブの割り当てを切断する場合
5. PC起動時にバッチを実行させる


##1. そもそもファイルサーバーとは？
ファイルサーバーという言葉に厳格な定義はありませんが、主にローカルネットワークの中でそれぞれのメンバーが自由にファイルを閲覧、保存、共有できる仕組みに使用されるサーバーのことを指します。

それぞれのメンバーが自分のPCにファイルを保存しているだけだと、他のメンバーにファイルを共有したい場合などに不便です。そんな時に役立つのがファイルサーバーです。


##2. 実行環境
PC: Windows10 Home (64bit)
NAS: Synology DS216j


##3.ネットワークドライブの割り当て
以下のバッチファイルで、ネットワーク上の共有フォルダをX、Y、Zドライブとして割り当てることができ、PCよりアクセスすることができます。


```Netowrk.bat
@echo off

rem バージョンとタイトル
set VER=1.0.0
title ネットワークドライブ割り当て Ver %VER%

rem ドライブレターの指定
set DRIVE_LETTER_1=X
set DRIVE_LETTER_2=Y
set DRIVE_LETTER_3=Z

rem ネットワークドライブのパス指定
set PATH_1="\\example\share1"
set PATH_2="\\example\share2"
set PATH_3="\\example\share3"

echo ネットワークドライブの割り当てプログラム Ver.%VER%
echo.
timeout /t 2 /nobreak >nul

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

rem ドライブレターとパスが表示される
echo %DRIVE_LETTER_1%: %PATH_1% です
echo %DRIVE_LETTER_2%: %PATH_2% です
echo %DRIVE_LETTER_3%: %PATH_3% です
echo --------------------------------------------

timeout /t 3 /nobreak >nul && echo 割り当て中です...
echo.

if exist %DRIVE_LETTER_1%:\ (
	echo %DRIVE_LETTER_1%:\ はすでに使用中です。
) else (
	net use %DRIVE_LETTER_1%: %PATH_1%
	if not "%ERRORLEVEL%" == "0" (
		echo エラーが発生しました。
	)
)
if exist %DRIVE_LETTER_2%:\ (
	echo %DRIVE_LETTER_2%:\ はすでに使用中です。
) else (
	net use %DRIVE_LETTER_2%: %PATH_2%
	if not "%ERRORLEVEL%" == "0" (
		echo エラーが発生しました。
	)
)
if exist %DRIVE_LETTER_3%:\ (
	echo %DRIVE_LETTER_3%:\ はすでに使用中です。
) else (
	net use %DRIVE_LETTER_3%: %PATH_3%
	if not "%ERRORLEVEL%" == "0" (
		echo エラーが発生しました。
	)
)
:End

echo.
echo スクリプトを終了します

timeout /t 1 /nobreak >nul
```

####実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545468/93a2a137-bdc5-f9b6-ad3f-388000a7b0ca.png)

もしもすでにXドライブが使用されているときは、
>X:はすでに使用中です。

と表示されます。

##4. ドライブの割り当てを切断する場合
###1. エクスプローラで切断
ネットワークドライブの割り当てを切断するときは、[切断(D)]を選択してください。
Ctrl押しながら選択すると複数選択して切断できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545468/06ee042c-1dcd-4e5c-3b40-250f13f10c2d.png)

###2. コマンドプロンプトで切断
例えば、Tドライブを切断したい場合は、コマンドプロンプトを起動して

```
net use T: /delete
```

と入力すると切断できます。

####実行結果
>C:\Users\test01> net use T: /delete
>T: が削除されました。


## 5. PC起動時にバッチを実行させる

###1. バッチファイルのショートカットを作成する
先ほど作ったバッチファイルのショートカットを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545468/bd795bf9-d9af-d284-6eb4-a4a8ac784a28.png)

###2. スタートアップに追加する
手動で実行するのはめんどくさいので自動的に同時に起動したほうが便利です。バッチのショートカットを「スタートアップ」に登録することで、Windows 10の起動と同時にバッチファイルも起動することができます。

まず、Windows + Rキー同時押しで[ファイル名を指定して実行]を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545468/c568827e-7cc6-0aa4-dd8e-f9a2f7af2853.png)
ここで［名前(O):］に「shell:startup」と入力し、［Enter］キーを押します。

スタートアップのフォルダーが表示されます。ここに、バッチのショートカットを貼れば、スタートアップに登録され、PC起動時にバッチを実行することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545468/112330f5-84c7-d7e3-2ac9-b4ac75aae745.png)

### 3. バッチを最小化した状態で実行させる
毎回PC起動時にコマンドプロンプトが出てきたら邪魔ですよね。そこで、最小化した状態で起動することができます。
スタートアップにおいたバッチを右クリックして、一番下の[プロパティ(R)]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545468/83fc2d82-230f-bec2-fd87-a9af88c36bc3.png)

プロパティを起動したら、「実行時の大きさ(R):」を[通常のウィンドウ]から[最小化]を選択します。
選択したら一番下の[OK]ボタンをクリックすれば終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545468/697a95ef-b077-4c84-1891-341f3ad69815.png)


##6. 参考

[バッチファイルでのネットワークドライブの割当と，net use / subst の違い](https://meltingrabbit.com/blog/article/2017041301)
[Windowsのバッチファイル(*.bat)の書き方自分用まとめ] (https://qiita.com/sksmnagisa/items/8c4c1788af44cc1dc63a)
[バッチファイルでwaitを入れる](https://qiita.com/gentaro/items/958971e3d21848ce3f68)
[ Windowsの起動時によく使うアプリを自動起動！「スタートアップ」への登録方法] (https://dekiru.net/article/17696)