32GB以下のUSBメモリは、
FAT32・NTFSどちらでも使用出来ますが
64GB以上になると通常では
NTFSやexFATのフォーマットしか選べず
FAT32フォーマットを行いたい場合は
パーティション操作が可能なアプリを使って
フォーマットする事で実現出来ます。
2023年4月現在
NTFSフォーマットされたUSBメモリでも
ブートは可能ですが、環境によっては
FAT32フォーマットが必要になります。
例えば、USBメモリへWindowsPEの作成を行う
MakeWinPEMedia コマンド 実行の際
ERROR: Failed to format D:; DiskPart errorlevel -2147212243
などと表示され、作成が出来ません。
この場合、
予めFAT32フォーマットを行ったUSBメモリを用意してから
MakeWinPEMedia を 実行する事で作成出来ます。
但し、パーティション操作アプリで作成を行った
FAT32フォーマット64GBのUSBメモリでは
同じようにエラーになってしまいます。
そのためフォーマットを行う区画を
32GBで区切る必要があります。
パーティション操作アプリでフォーマットを行うには
1. 区画を32GBで区切る
2. 32GBの領域をFAT32でフォーマット
パーティション操作アプリ以外の方法でフォーマットを行うには
① MediaCreation tool で 直接USBメモリへインストーラを作成
② DiskPart コマンド で 32GBに区切ってフォーマット
等があります。
①は、ダウンロードや作成に時間が掛かりますので
②を行うバッチを作成します。
GUIを入れるので
_inputbox.vbs
_msgbox.vbs
_起動可能USBメモリ作成.cmd
3つのファイルをコピペして
同じフォルダに配置してから
_起動可能USBメモリ作成.cmd
を実行して下さい。
初期化コマンドですから
Disk番号を間違えないように
細心の注意を払って実行して下さい。
実行すると
Disk番号と
NTFSフォーマット
FAT32フォーマット
32GBに区切ってフォーマット
フォーマットの種類を聞いてきますので
目的に沿ったフォーマットを選択して下さい。
USBメモリの容量を考慮していませんので
32GB以下のUSBメモリに
32GBに区切ってフォーマットを選択すると
エラーになります。
@echo off
SetLocal EnableDelayedExpansion
SET タイトル="起動可能USBメモリ作成"
title ★ ★ ★ %タイトル:"=% ★ ★ ★
SET メッセージ="● 処理開始前に、初期化するUSBメモリ のみ 接続し、crlfcrlf その他のデバイスは、取り外しておいて下さい。crlfcrlf● 接続したUSBメモリ が 認識されてからcrlfcrlf 【 OK 】 を クリックして下さい。"
call cscript //Nologo "%~dp0_msgbox.vbs" %メッセージ% 0 %タイトル% > nul
cls
echo;
echo;
set /p<nul="接続機器の確認中..."
rem /;
rem /; ハードウェアインターバルで念のため、10秒待つ
rem /;
ping -n 10 localhost > nul
for /f "tokens=2" %%0 in ('echo.list disk ^| diskpart ^| find /i "ディスク" ^| find /i /v "gpt" ^| find /i /v "*"') do (
set Disk_Number=%%0
)
for /f "tokens=2" %%0 in ('echo.list disk ^| diskpart ^| find /i "ディスク !Disk_Number! メディアなし"') do (
set Disk_Number=
)
SET メッセージ="USBメディア が 接続 又は 認識されていませんcrlfcrlf ★ 継続する → 【 はい 】 を クリックcrlfcrlf ★ 処理をやめる → 【 いいえ 】 を クリック"
if not DEFINED Disk_Number for /f "usebackq tokens=* delims=" %%0 in (`call cscript //Nologo "%~dp0_msgbox.vbs" %メッセージ% 260 %タイトル%`) do SET 答え=%%0
if "%答え%"=="No" cls & goto :eof
cls
echo;Diskpart list disk の 実行結果を表示します
echo; list disk | diskpart | find /i "ディスク" | find /i /v "gpt"
:Input_Disk_Number
SET メッセージ="crlf☆ 初期化する USBメモリ の ディスク № をcrlfcrlf 半角数字 で 入力して下さいcrlfcrlf ディスク №の最大値がセットされてますcrlfcrlfcrlf※ コマンドプロンプト画面に表示されているcrlfcrlf 「ディスク?」の数字ですcrlfcrlfcrlf ★ OK → そのまま 【 OK 】 を クリックcrlfcrlf ★ 変更 → 変更後、 【 OK 】 を クリック"
SET 初期値=%Disk_Number%
for /f "usebackq tokens=* delims=" %%0 in (`call cscript //Nologo "%~dp0_inputbox.vbs" %メッセージ% %タイトル% "%初期値%"`) do SET Select_Number=%%0
set Disk_Select=NG
for /L %%0 in (1,1,26) do if "%%0"=="!Select_Number!" set Disk_Select=OK
SET メッセージ="☆ 初期化するディスク番号入力でcrlfcrlf 1~26の半角数字以外が入力されましたcrlfcrlfcrlf ★ もう一度入力 → 【 はい 】 を クリックcrlfcrlf ★ 処理をやめる → 【 いいえ 】 を クリック"
if "!Disk_Select!"=="NG" for /f "usebackq tokens=* delims=" %%0 in (`call cscript //Nologo "%~dp0_msgbox.vbs" %メッセージ% 4 %タイトル%`) do if "%%0"=="Yes" ( goto :Input_Disk_Number ) else ( goto :eof )
SET メッセージ="☆ ファイルシステムを指定して下さいcrlfcrlfNTFS → 【 はい 】crlfcrlfFAT32 → 【 いいえ 】 ※ 通常は、これを選択crlfcrlf32GB-Fat32 → 【 キャンセル 】 ※ 32GBに区切って初期化します。crlfcrlf 64GB以上のUSBメモリをcrlf FAT32で使用出来ます。crlf 残りの領域は未使用になります。crlfcrlf 32GB以下のUSBメモリに指定するとcrlf エラーになるので注意して下さい。"
for /f "usebackq tokens=* delims=" %%0 in (`call cscript //Nologo "%~dp0_msgbox.vbs" %メッセージ% 259 %タイトル%`) do SET 答え=%%0
if "%答え%"=="Yes" set FileSystem=NTFS
if "%答え%"=="No" set FileSystem=FAT32
if "%答え%"=="Cancel" set FileSystem=FAT32
SET メッセージ="☆ ディスク 「 !Select_Number! 」 を 「 !FileSystem! 」 で 初期化しますcrlfcrlf ★ 実行する → 【 はい 】 を クリックcrlfcrlf ★ 処理をやめる → 【 いいえ 】 を クリック"
for /f "usebackq tokens=* delims=" %%0 in (`call cscript //Nologo "%~dp0_msgbox.vbs" %メッセージ% 260 %タイトル%`) do (
if not "%%0"=="Yes" goto :eof
)
if not "%答え%"=="Cancel" (
(
echo;rescan
call echo;select disk %%Select_Number%%
echo;clean
echo;create partition primary
echo;active
call echo;format quick fs=%%FileSystem%%
echo;assign
echo;exit
) | Diskpart
) else (
(
echo;rescan
call echo;select disk %%Select_Number%%
echo;clean
echo;create partition primary Size=32767
echo;active
call echo;format quick fs=%%FileSystem%%
echo;assign
echo;exit
) | Diskpart
)
rem /;
rem /; Diskpart の ERRORLEVEL が 失敗しても「0」で終わるので失敗メッセージ省略
rem /;
SET メッセージ="起動可能なUSBメモリ【 !FileSystem! 】作成 が 完了しましたcrlfcrlf【 OK 】 を クリックして処理を終了して下さい"
call cscript //Nologo "%~dp0_msgbox.vbs" %メッセージ% 0 %タイトル% > nul
Option Explicit
REM ------------------------------------------------------
REM inputbox.vbs str1 , str2 [,mode]
REM str1:入力するデータの説明文
REM str2:inputboxのタイトル
REM str3:既定の入力データ
REM (動作)
REM データの入力を行う為の入力ボックスを表示します。
REM 入力された文字列データを返します。
REM str1 中の 「crlf」という文字列は改行に変換します。
REM ------------------------------------------------------
Dim args, arg(99), v, cnt
Dim str1, str2, str3
Dim mode
Dim respond, eLevel
Dim CRLF
REM 改行符号を設定します。
CRLF = chr(13) & chr(10)
Set args = WScript.Arguments
cnt = 1
For Each v In args
arg(cnt) = v
cnt = cnt + 1
Next
eLevel = 0: REM エラーが発生したときに値を設定します。
respond = "": REM 呼び出し元への戻り値を設定します。
REM --------------------------------
REM 改行文字の置き換え
arg(1) = RepExAll (arg(1), "crlf", CRLF)
eLevel = 0
Select Case args.Count
Case 0: mode = InputBox ()
Case 1: mode = InputBox (arg(1))
Case 2: mode = InputBox (arg(1), arg(2))
Case Else: mode = InputBox (arg(1), arg(2), arg(3))
End Select
respond = mode
REM --------------------------------
REM 結果の表示
WScript.Echo respond
WScript.Quit (eLevel)
REM ここからサブルーチン=========================================
REM 原稿文字列を正規文字列で検索し、一致する文字をすべて置換文字列に置き換えます。
REM s : 原文字列
REM t : 正規文字列
REM d : 置換文字列
Function RepExAll ( s , t , d )
Dim regExpression, Matches ' 変数を作成します。
Set regExpression = New RegExp ' 正規表現を作成します。
regExpression.Pattern = t ' パターンを設定します。
regExpression.IgnoreCase = True ' 大文字と小文字を区別しないように設定します。
regExpression.Global = True ' 文字列全体を検索するように設定します。
RepExAll = regExpression.Replace(s , d) ' 置換を実行します。
End Function
Option Explicit
REM ------------------------------------------------------
REM msgbox.vbs str1 , str2 [,mode]
REM str1:表示するメッセージ
REM num :表示するボタンの選択
REM str2:メッセージボックスのタイトル
REM (動作)
REM メッセージボックスを表示し、クリックされたボタンを
REM 返します。
REM str1 中の 「crlf」という文字列は改行に変換します。
REM ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
REM ボタンの表示選択と動作などの設定(ボタン表示や動作などの値を合計します。)
REM 0 [OK] ボタンのみを表示します。
REM 1 [OK] ボタンと [キャンセル] ボタンを表示します。
REM 2 [中止]、[再試行]、および [無視] の 3 つのボタンを表示します。
REM 3 [はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。
REM 4 [はい] ボタンと [いいえ] ボタンを表示します。
REM 5 [再試行] ボタンと [キャンセル] ボタンを表示します。
REM 16 警告メッセージ アイコンを表示します。
REM 32 問い合わせメッセージ アイコンを表示します。
REM 48 注意メッセージ アイコンを表示します。
REM 64 情報メッセージ アイコンを表示します。
REM 0 第 1 ボタンを標準ボタンにします。
REM 256 第 2 ボタンを標準ボタンにします。
REM 512 第 3 ボタンを標準ボタンにします。
REM 768 第 4 ボタンを標準ボタンにします。
REM 0 アプリケーション モーダルに設定します。
REM メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。
REM 4096 システム モーダルに設定します。
REM メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。
REM ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
REM 戻り値となる文字列
REM ボタンの名前 -> respondの戻り値
REM [OK] -> Ok
REM [キャンセル] -> Cancel
REM [中止] -> Stop
REM [再試行] -> Retry
REM [無視] -> Ignore
REM [はい] -> Yes
REM [いいえ] -> No
REM ------------------------------------------------------
Dim args, arg(99), v, cnt
Dim str1, str2
Dim mode
Dim respond, eLevel
Dim CRLF
REM 改行符号を設定します。
CRLF = chr(13) & chr(10)
Set args = WScript.Arguments
cnt = 1
For Each v In args
arg(cnt) = v
cnt = cnt + 1
Next
REM 改行文字の置き換え
arg(1) = RepExAll (arg(1), "crlf", CRLF)
eLevel = 0
Select Case args.Count
Case 0: mode = 0: eLevel = 1
Case 1: mode = MsgBox (arg(1))
Case 2: mode = MsgBox (arg(1), arg(2))
Case Else: mode = MsgBox (arg(1), arg(2), arg(3))
End Select
Select Case mode
Case 0: respond = ""
Case 1: respond = "Ok"
Case 2: respond = "Cancel"
Case 3: respond = "Stop"
Case 4: respond = "Retry"
Case 5: respond = "Ignore"
Case 6: respond = "Yes"
Case 7: respond = "No"
End Select
REM 結果の表示
WScript.Echo respond
WScript.Quit (eLevel)
REM ここからサブルーチン=========================================
REM 原稿文字列を正規文字列で検索し、一致する文字をすべて置換文字列に置き換えます。
REM s : 原文字列
REM t : 正規文字列
REM d : 置換文字列
Function RepExAll ( s , t , d )
Dim regExpression, Matches ' 変数を作成します。
Set regExpression = New RegExp ' 正規表現を作成します。
regExpression.Pattern = t ' パターンを設定します。
regExpression.IgnoreCase = True ' 大文字と小文字を区別しないように設定します。
regExpression.Global = True ' 文字列全体を検索するように設定します。
RepExAll = regExpression.Replace(s , d) ' 置換を実行します。
End Function