Windows標準環境でファイル分割 2020年改

大容量ファイルを分割して小さくする

仕事で取引先に10MB超のデータを送ることになった。
しかし、普通に送るとファイルのサイズが大きすぎてメールに添付して送ることができない。
しかも、会社のパソコンなのでフリーソフトを勝手にインストールすることはできない。
そこで、Windows標準環境でも簡単にファイルを分割して小さくすることができる方法を開発した。

以前、Windows標準環境でファイル分割 - reosablo.blogという記事を書いたが、新型コロナウイルスの影響でファイル分割を何度もすることになりそうなので、リニューアルして利便性の良い改良版を作成した。

今回の記事の方法を用いると右クリックメニューで簡単にファイルを分割することができる。
なお、特別なソフトをインストールする必要は無いので会社のパソコンでも問題なく利用できる。

下準備

この手順で右クリックメニューにファイル分割コマンドを追加する。

① 「メモ帳」を開いて以下の内容をコピペする

' Save this script as ".vbs" file in "shell:sendto" folder.
' cite: https://reosablo.hatenablog.jp/entry/2020/04/05/141821

Size = InputBox("Split File Size? (MB)", WScript.ScriptName, "10")
If IsEmpty(Size) Then WScript.Quit()
Size = CLng(Size * 1048576)
Size = Size - Size Mod 512

Set FileSystem = CreateObject("Scripting.FileSystemObject")
TempDirPath = FileSystem.GetSpecialFolder(2).Path
DdfPath = TempDirPath & "\cabprof.ddf"
FirstFilePath = WScript.Arguments.Unnamed(0)
DiskDirectoryTemplate = FirstFilePath & ".split"
CabinetNameTemplate = FileSystem.GetBaseName(FirstFilePath) & "-*.cab"

Set Ddf = FileSystem.CreateTextFile(DdfPath)
Ddf.WriteLine(".Set RptFileName=NUL")
Ddf.WriteLine(".Set InfFileName=NUL")
Ddf.WriteLine(".Set MaxDiskSize=" & Size)
Ddf.WriteLine(".Set DiskDirectoryTemplate=" & DiskDirectoryTemplate)
Ddf.WriteLine(".Set CabinetNameTemplate=" & CabinetNameTemplate)
For Each FilePath In WScript.Arguments.Unnamed
  Ddf.WriteLine("""" & FilePath & """")
Next
Ddf.Close

Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = FileSystem.GetParentFolderName(FirstFilePath)
Shell.Run "makecab /f """ & DdfPath & """", , True

FileSystem.DeleteFile(DdfPath)

② 「名前を付けて保存」で、ファイル名に"shell:sendto"と入力する。すると、"SendTo"という名前のフォルダに移動する。
③ ファイル名に「ファイルを分割.vbs」と入力して保存する。

ファイルの分割

① 分割したいファイルを右クリックして「送る」というメニューの中にある「ファイルを分割.vbs」を選択する。

② "Split File Size? (MB)"と聞かれるので分割したいファイルサイズを数字で入力する。全角半角はどちらでもOK、小数点ありでもOK。

分割したいファイルと同じフォルダにファイル名と同じフォルダができているので、 そのフォルダに入っている"ファイル名-1.cab"、"ファイル名-2.cab"...という名前のファイルをすべて小分けして送信すればOK。

"ファイル名-1.cab"をダブルクリックすると中にデータが入っているように見えるはず。
当然ながら、すべての.cabファイルが揃っていなければ中身は取り出せない。

ファイルの結合

先方に送信するメールに下記の文言をコピペするとよい。
念のため、メールで送信する前に自分のパソコンで解凍できることを確認しておくとトラブルを防げるかもしれない。

送信するファイルのサイズが大きいため、いくつかのメールに分割して送信致します。  
お手数ですが下記手順でファイルを結合していただくようお願い申し上げます。  

 ① お送りするメールの添付ファイル「~-1.cab」、「~-2.cab」…をすべて同じフォルダ内に保存してください。  

 ② 「~-1.cab」の中にファイルが入っているように見えるのでダブルクリックで解凍してください。  

お送りした添付ファイルが全て揃っていればこの手順で解凍できます。  
もし解凍中に、何かフォルダを選択する画面が出た場合はファイルが足りませんのでご連絡下さい。

後処理

ファイル分割コマンドが要らなくなったらこの手順で削除できる。

エクスプローラーのアドレスバーに"shell:sendto"と入力する。すると、"SendTo"という名前のフォルダに移動する。
② 「ファイルを分割.vbs」のファイルを削除する。

参考文献