====== Base64変換によるバイナリファイルのテキスト化と復元 ======
[[:powershell|一つ上へ]]
===== バイナリファイルからテキスト化する =====
PowerShellをすべてカレントディレクトリで作業しているとする。
''ReadAllBytes'' コマンドでバイナリファイルを読み込み、''ToBase64String''コマンドでテキストに変換する。
その後、'Set-Content'でファイルに出力することができる。
# ZIP ファイルのパス
$zipPath = ".\original.zip"
# Base64 保存先
$base64File = ".\original_base64.txt"
# ZIP を読み込んで Base64 に変換
$bytes = [System.IO.File]::ReadAllBytes($zipPath)
$base64 = [System.Convert]::ToBase64String($bytes)
Set-Content -Path $base64File -Value $base64
Write-Output "ZIP を Base64 に変換して保存しました。"
===== Base64からバイナリファイルを復元する =====
テキスト化されたファイルからバイナリファイルを復元するには、まず''Get-Content''コマンドでファイルを読み込み
''FromBase64String''コマンドでバイナリに変換し、そのバイナリから''WriteAllBytes''コマンドでファイルに出力する。
$base64File = ".\original_base64.txt"
$restoredFile = ".\restored.zip"
$base64FromFile = Get-Content -Path $base64File -Raw
$bytes = [System.Convert]::FromBase64String($base64FromFile)
[System.IO.File]::WriteAllBytes($restoredZip, $bytes)
Write-Output "ZIP を復元しました: $restoredFile"
===== クリップボードを経由してBase64変換と復元を行う =====
変換側で以下のように変換し、''Set-Clipboard''コマンドを実行する。
$inputFile = ".\input.zip"
# ZIP を読み込んで Base64 に変換
$bytes = [System.IO.File]::ReadAllBytes($inputFile)
$base64 = [System.Convert]::ToBase64String($bytes)
Set-Clipboard -Value $base64
復元したいマシン側で以下のように実行する。
$base64FromClipboard = Get-Clipboard
$bytes = [System.Convert]::FromBase64String($base64FromClipboard)
[System.IO.file]::WriteAllBytes(".\fukugen.zip", $bytes)
正常に復元されているかどうかをMD5ハッシュなどで確認する。
Get-FileHash .\original.zip -Algorithm MD5
Get-FileHash .\restored.zip -Algorithm MD5