ReadAllBytesを使用しているので、あまり大きなファイルはキツイですが、PowerShellでファイルを読み込んで、複数のファイルに分割します。下記のコードでは、ついでに結合用のバッチ(単なるコピーコマンド)も作成しています。

$FileSize = 1024000;	# 分割ファイルサイズ
$FileName = "C:\temp\abc.jpg";	# ソースファイル

$num = 0;
$rs = 0;

$fnbase = [System.IO.Path]::GetFileNameWithoutExtension($FileName);
$bat = New-Object System.Text.StringBuilder("copy /b ");

# ファイルを読み込み
$src = [System.IO.File]::ReadAllBytes($FileName);

while ($rs -lt $src.Length)
{
	$num++;
	$fn = [String]::Format($fnbase + ".{0:D3}", $num);
# 出力用のバッファを作成してソースからコピー
	$buf = New-Object byte[] ([Math]::Min($FileSize, $src.length - $rs));
	[system.Array]::Copy($src, $rs, $buf, 0, $buf.length);

# バッファをファイルに書き出す
	[System.IO.File]::WriteAllBytes($fn, $buf);
	$rs += $FILESIZE;

	[void] $bat.Append($fn + "+")
}
# 結合用バッチの仕上げを行ってファイルへ書き出す
[void] $bat.Remove($bat.length -1, 1);
$bat.Append(" " + [System.IO.Path]::GetFileName($FILENAME)).ToString() | Out-File -FilePath ($fnbase + ".bat") -Encoding Ascii;

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading