#概説
Windows仮想ディスクファイル(VHD)をコマンドラインなどからバッチ作成する方法です。
VHDの利用目的はHyper-Vなど色々ありますが、一時的な作業領域を確保するのに有効と思われます。
特にdismコマンドのような怪しいフォルダ構造を作るツールを扱う場合、VHD上で作業することで作業に失敗してもファイルシステムの汚染を避けられ便利です。
(※たとえ階層構造やACLがおかしくなっても、VHDファイル毎処分してしまえばなかった事に。)
#構文
##VHD作成
REM VHDに割り当てるドライブレター(任意)
SET VDRIVE=K
REM VHDファイルのパス(基本変更不要ですが%TEMP%の空きが危ない場合は別のパスを明示指定したほうが良いです)
SET VFILE=%TEMP%\VF_%VDRIVE%.VHD
REM VHD作成--------------
(
echo create vdisk file="%VFILE%" maximum=65536 type=expandable
echo select vdisk file="%VFILE%"
echo attach vdisk
echo clean
echo create partition primary
echo format fs=ntfs quick
echo assign letter=%VDRIVE%
)|diskpart
##VHD削除
REM VHDに割り当てるドライブレター(任意)
SET VDRIVE=K
REM VHDファイルのパス(基本変更不要ですが%TEMP%の空きが危ない場合は別のパスを明示指定したほうが良いです)
SET VFILE=%TEMP%\VF_%VDRIVE%.VHD
REM VHD削除--------------
(
echo select vdisk file="%VFILE%"
echo detach vdisk
)|diskpart
rem VHDを再利用するなら↓構文を無効化してください。
del /q "%VFILE%"
上記の作成用構文を組み合わせて使うのであれば、削除側のSETコマンドは不要です。
#補足
###diskpartについて
vhdの制御はdiskpartコマンドを利用します。
diskpartのリファレンス https://technet.microsoft.com/ja-jp/library/cc766465(v=ws.10).aspx
(しかし…肝心の仮想ディスクの説明がない…help等を見るのが無難かも)
###カッコを使った構文について
括弧を使うとbash等のヒアドキュメント風にコマンドをスクリプトに埋め込めます。
詳細は拙作記事「Windowsコマンドラインにおける括弧の活用」を参照ください。