このページの本文へ

前へ 1 2 次へ

Windows Info 第51回

Windows 10でOneDriveの同期先をメモリカードに移す(後編)

2015年10月13日 12時00分更新

文● 塩田紳二 編集● ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windows 10ではOneDriveの同期先をリムーバブルドライブに設定することができない。本体のストレージ容量が小さく、microSDカードなどを活用する必要がある安価なWindowsタブレットやスティック型PCでは、それでは困ることが多い。そこで活用したいのが仮想HDDだ。

リムーバブルドライブ上には本来同期先を設定できないWindows 10だが、今回の方法を用いるとそれが可能になる

 前編(関連記事)では、仮想HDD(VHDXファイル)をメモリカード上に作り、手動でマウントするところまでを行なった。

 今回の後編では、この仮想HDDを起動時に自動的にマウントするところから解説する。なお、前回の解説で仮定したとおり、メモリカードはDドライブ、仮想HDDはOドライブに割り当てていることを想定している。Windowsでは1回ドライブ文字を割り当てると次回以降に再マウントしたときに同じドライブ文字を使おうとする。このため、最低でも一回は仮想HDDをマウントして、ドライブ文字を決定しておいてほしい。

仮想HDDファイルを起動時に自動でマウントする

 Windowsには、仮想HDDを自動でマウントする機能がなく、「コンピュータの管理」を使って手動でマウントするか、あるいはDISKPARTコマンドを使ってマウントするしか方法がない。このため、マウント用のスクリプトを作り、タスクスケジューラーでシステムの起動時にこれを実行させる。

 なぜ、このようにするのかというと、少なくともOneDriveが実行される以前にマウントが完了していなければならないからだ。スクリプトを使って仮想HDDをマウントするには、DISKPARTコマンドを使う。このプログラムは、HDDのパーティション作成などに利用するものだが、仮想HDDのマウントなども可能になっている。

 DISKPARTは、数多くのサブコマンド(DISKPARTコマンド)を持ち、引数なしで起動すると、コマンドを連続して受け付けるようになる。また、DISKPARTコマンドをテキストファイルに記述しておき、まとめて実行する「スクリプト」機能もある。具体的には、以下のコマンドを使う。

 select vdisk file=仮想HDDファイルのパス
 attach vdisk

 しかし、DISKPARTコマンドを直接使うと、ファイル名などが固定されてしまい変更などが行ないにくくなる。そこで、SDカードのルートフォルダにある仮想HDDファイルをすべてマウントするバッチスクリプトを作った。複数のVHD/VHDXファイルがあっても、これで全部マウントできる。

 また、マウントしたくなければ、他のドライブやサブフォルダへ移動させればよい。それが、下の囲みのリスト1「mount.bat」である。このバッチファイルは、動作時にDISKPARTコマンドを自動的に作り、それを実行するため、バッチファイルのみで動作する。なお、このバッチファイルはCドライブの「LocalCmd」フォルダに保存する設定になっている。

 バッチファイル作成の手順は以下のとおりだ。

1. C:\に「LocalCmd」フォルダを作る。他の名前でもかまわないが、以後の作業では、フォルダ名を読み替える必要がある。何を言ってるかわからないのなら、説明通りにやってほしい
2. メモ帳を起動し、リスト01「mount.bat」をコピーして貼り付ける
3. メモ帳の「ファイルメニュー」→「名前を付けて保存」を選択
4. ファイルダイアログで「C:\LocalCmd」を選択
5. 「ファイルの種類」で「すべてのファイル」を選択。選択しないとテキストファイルになってしまう
6. ファイル名欄に「mount.bat」と入力して「保存」ボタンを押す

C:\LocalCMDフォルダを作り、リスト01をメモ帳に貼り付けて保存する。このとき「ファイルの種類」を「すべてのファイル」としてmount.batをファイル名に指定

7. エクスプローラーでC:\LocalCmdにmount.batが作成されていることをチェック。アイコンは歯車が書いてあるバッチファイル用のものになっていることを確認する

リスト01「mount.bat」

rem @echo off

rem SCANDIRはVHD/VHDXがおかれているフォルダ。
rem ファイルが1つならば直接パスを指定してもよい。
rem 指定されているのはDドライブのルートにあるvhdとvhdxファイルすべて

set SCANDIR=D:\*.vhd?

rem 実行するDISKPARTスクリプトとログを作成するパス
rem このスクリプトと同じフォルダが指定されているが書き込み不可の場合は変更する。

set SCRIPTDIR=%~p0%

rem DISKPARTスクリプトのフルパス名(通常は変更の必要なし)

set SCRIPT=%SCRIPTDIR%$diskpartscript

rem DISKPARTログファイル

set LOG=%SCRIPTDIR%mount_log.txt

rem デバッグ用
set NOERR=noerr

rem 実行前に%SCRIPT%を削除

del %SCRIPT%

rem SCANDIRにある対象を登録

for %%i in (%SCANDIR%) do ( echo select vdisk file=%%i %NOERR% >>%SCRIPT% && echo attach vdisk %NOERR% >>%SCRIPT%)

rem スクリプトの最後に終了コマンドを置いておく。

echo exit >>%SCRIPT%

rem DISKPARTを実行

diskpart -s %SCRIPT%

 次にこれをタスクスケジューラーで起動するように設定する。「すべてのアプリ」の「Windows管理ツール」から「タスクスケジューラー」を起動する。ここにタスクを登録するが、最初に自分で作ったタスクを登録する「フォルダ」を作り、そこにタスクを登録する。手順は以下のようになる。

1. 左側の領域で「タスクスケジューラ(ローカル)」の「タスクスケジューラライブラリ」が選択されていることを確認してから「操作」メニューの「新しいフォルダ」を選択
2. ダイアログにフォルダの名前を入れる。筆者は「shioda」とした
3. 左側の領域で作成したフォルダを選択する
4. 中央上の領域で右クリックして「新しいタスクの作成」を選択

タスクスケジューラーを起動しフォルダを作成したら、それを選択して中央上部分で右クリックしてメニューから「新しいタスクの作成」を選択

5. ダイアログボックスが開かれるので以後、5つのタブを順次設定する。最初の「全般」タブでは、「名前」を入力(ここではOneDrive Mountとした)、セキュリティオプションで「ユーザーがログオンしているかどうかにかかわらず実行する」を選択する

「全般」タブでは、「名前」を入力し、「セキュリティオプション」の「ユーザーがログオンしているかどうかにかかわらず実行する」を選択

6. 「トリガー」タブを開き、左下の「新規」ボタンをクリック。開いたダイアログで「タスクの開始」を「スタートアップ時」に設定、「詳細設定」は「有効」のみにチェックボックスが付いている状態にする

「トリガー」タブでは、「新規」ボタンを押し、「新しいトリガー」ダイアログで「タスクの開始」で「スタートアップ時」を選択。「詳細設定」は「有効」以外オフにする

7. 「操作」でも「新規」ボタンをし、ダイアログの「プログラム/スクリプト」で先ほど作成したスクリプト(C:\LocalCmd\mount.batを仮定)を指定する

「操作」タブでも「新規」ボタンを押し、「新しい操作」ダイアログでリスト01で作成したバッチファイルを指定する

8. 「条件」タブでは、すべてのチェックボックスをオフにしておく

「条件」タブでは、チェックボックスをすべてオフに

9. 「設定」タブでは、「タスクを停止するまでの時間」をオフにする(あとは標準のまま)

「設定」タブでは、「タスクを要求時に実行する」以外はオフにする

10. OKボタンで「タスクの作成」ダイアログを閉じる。パスワードを聞いてくるので、自分のアカウントのパスワードを入力する

 設定が完了したら、システムを再起動してみる。起動後、エクスプローラーの「PC」を開いて、仮想HDDがマウントされていればOKだ。


(次ページでは、「実際にOneDriveの同期先フォルダを変更する」)

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン