この６４ＧＢのＵＳＢメモリに使い道を

３２ＧＢ以下のＵＳＢメモリは、
ＦＡＴ３２・ＮＴＦＳどちらでも使用出来ますが
６４ＧＢ以上になると通常では
ＮＴＦＳやｅｘＦＡＴのフォーマットしか選べず
ＦＡＴ３２フォーマットを行いたい場合は
パーティション操作が可能なアプリを使って
フォーマットする事で実現出来ます。

２０２３年４月現在
ＮＴＦＳフォーマットされたＵＳＢメモリでも
ブートは可能ですが、環境によっては
ＦＡＴ３２フォーマットが必要になります。

例えば、ＵＳＢメモリへWindowsPEの作成を行う
MakeWinPEMedia コマンド 実行の際

ERROR: Failed to format D:; DiskPart errorlevel -2147212243
などと表示され、作成が出来ません。

この場合、
予めＦＡＴ３２フォーマットを行ったＵＳＢメモリを用意してから
MakeWinPEMedia を 実行する事で作成出来ます。

但し、パーティション操作アプリで作成を行った
ＦＡＴ３２フォーマット６４ＧＢのＵＳＢメモリでは
同じようにエラーになってしまいます。

そのためフォーマットを行う区画を
３２ＧＢで区切る必要があります。

パーティション操作アプリでフォーマットを行うには
１． 区画を３２ＧＢで区切る
２． ３２ＧＢの領域をＦＡＴ３２でフォーマット

パーティション操作アプリ以外の方法でフォーマットを行うには
① MediaCreation tool で 直接ＵＳＢメモリへインストーラを作成
② DiskPart コマンド で ３２ＧＢに区切ってフォーマット
等があります。

①は、ダウンロードや作成に時間が掛かりますので
②を行うバッチを作成します。

ＧＵＩを入れるので

_inputbox.vbs
_msgbox.vbs
_起動可能ＵＳＢメモリ作成.cmd

３つのファイルをコピペして
同じフォルダに配置してから
_起動可能ＵＳＢメモリ作成.cmd
を実行して下さい。

初期化コマンドですから
Ｄｉｓｋ番号を間違えないように
細心の注意を払って実行して下さい。

実行すると
Ｄｉｓｋ番号と
ＮＴＦＳフォーマット
ＦＡＴ３２フォーマット
３２ＧＢに区切ってフォーマット
フォーマットの種類を聞いてきますので
目的に沿ったフォーマットを選択して下さい。

ＵＳＢメモリの容量を考慮していませんので
３２ＧＢ以下のＵＳＢメモリに
３２ＧＢに区切ってフォーマットを選択すると
エラーになります。

```bat:_起動可能ＵＳＢメモリ作成.cmd
@echo off
SetLocal EnableDelayedExpansion

SET             タイトル="起動可能ＵＳＢメモリ作成"

title ★ ★ ★ %タイトル:"=% ★ ★ ★

SET          メッセージ="● 処理開始前に、初期化するＵＳＢメモリ のみ 接続し、crlfcrlf　 その他のデバイスは、取り外しておいて下さい。crlfcrlf● 接続したＵＳＢメモリ が 認識されてからcrlfcrlf　 【 ＯＫ 】 を クリックして下さい。"
call cscript //Nologo "%~dp0_msgbox.vbs"   %メッセージ%   0 %タイトル% > nul

cls
echo;
echo;
set /p<nul="接続機器の確認中．．．"

rem /;
rem /; ハードウェアインターバルで念のため、１０秒待つ
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          メッセージ="ＵＳＢメディア が 接続 又は 認識されていません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☆ 初期化する ＵＳＢメモリ の ディスク № をcrlfcrlf　 半角数字 で 入力して下さいcrlfcrlf　 ディスク №の最大値がセットされてますcrlfcrlfcrlf※ コマンドプロンプト画面に表示されているcrlfcrlf　 「ディスク？」の数字ですcrlfcrlfcrlf ★ ＯＫ → そのまま 【 ＯＫ 】 を クリックcrlfcrlf ★ 変更 → 変更後、 【 ＯＫ 】 を クリック"
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　 １～２６の半角数字以外が入力されました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          メッセージ="☆ ファイルシステムを指定して下さいcrlfcrlfＮＴＦＳ　　→　【 はい 】crlfcrlfＦＡＴ３２　→　【 いいえ 】　   ※ 通常は、これを選択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 が 失敗しても「０」で終わるので失敗メッセージ省略
rem /;

SET          メッセージ="起動可能なＵＳＢメモリ【 !FileSystem! 】作成 が 完了しましたcrlfcrlf【 ＯＫ 】 を クリックして処理を終了して下さい"
call cscript //Nologo "%~dp0_msgbox.vbs"   %メッセージ%   0 %タイトル% > nul

```
```bat:_inputbox.vbs
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

```
```bat:_msgbox.vbs
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

```