言うだけ言ってみる

なんとなく記録。

ラジオで音楽ばかりを聴きたい場合

2014年10月27日 | Weblog
音楽を流しながら作業でもしようと、FMラジオをつけてみたら、DJのどうでもいいおしゃべりやリスナーからのメッセージ紹介ばかりだったりして、ちっとも音楽が流れず、やっと音楽が流れたかと思ったら、今度はプロモーションの曲ばかりで飽き飽き…ということがよくある。

インターネットラジオ「OTTAVA」(http://ottava.jp/)もいいが、クラシックなので、作業用としては眠くなってしまうのが難点。
これのポップス版がないものかと思っていたのだが、
ラジオNIKKEI第2をベースとした全国で聴けるインターネットラジオ放送「RN2」が良かった。(http://www.radionikkei.jp/musicrn2/
ラジオだと短波放送なので聴ける機械は限られるが、スマホやPCからrazikoで聴くことができる。

ここは基本的に音楽ばかりが流れていて(時々誰かの語りのコーナー?もある)、いろいろなジャンルを和洋問わず聴くことができる。時間帯によってジャンルごとにまとまって放送されるから、好みのジャンルだけ聞くのもよいが、普段自分が聞かないようなジャンルの音楽も聞いていると、意外な発見があったりして面白い。大橋トリオやキリンジといったアーティストは最近ここで知った。
CMは時々流れるが、FMでは必ず入る交通情報やニュースもない。今のまま続いてほしい放送である。夜は23時まで。

※但し、平日のみ。土日は競馬実況などをやっているようです

Windowsの標準機能だけでファイルを分割する方法

2014年10月24日 | Weblog
最近は、通信の高速化やメールボックスの大容量化のせいか、大きいファイルを添付したメールが送られてきますが、客先作業で作業現場からファイルを送ってもらったりする場合、あまり大きい添付ファイルは遠慮しなければなりません。ただ、zipで圧縮しても数MBになってしまうことがあり、困ることがよくあります。

そこで、ファイルを小さいサイズに分割して複数のメールに分けて送りたい、というニーズが出てくるのですが、ファイルを分割するツールはWindowsには標準で入っていません。DOSコマンドで、cabという形式で分割することは可能ですが、これをメールで送るのはセキュリティ上NGという場合が多く、やはりそのまま単純に分割したい。
フリーソフトのファイル分割ツールは結構ありますが、お客さんの端末に勝手に入れるわけにもいかないし、入れてくれとも言えません。

そのような場合、Windowsの標準機能だけでしかも簡単にファイル分割する方法として、今回は、VBScriptを使用します。VBScriptであれば、中身はテキストなので、拡張子を.txtにしてメール添付で現場に送れ、現場で拡張子を.vbsにすれば実行できます。(VBScriptが何であるかやユーザ権限の問題については、別途調べてください)

分割したいファイルをドラッグアンドドロップするだけで、ファイルの先頭から1024KB(=1MB)ごとに分割するVBScriptを作ったので公開します。入出力ファイルをバイナリとして扱う必要があるのがポイントです。

分割されたファイルを1つに戻す(結合する)には、DOSコマンドで

COPY /B hoge.zip.0+hoge.zip.1+hoge.zip.2 hoge.zip
(hoge.zipが、hoge.zip.0、hoge.zip.1、hoge.zip.2に3分割された場合の例)

とすればよい。

※2017年5月24日追記;下記VBScriptのソースの最後に、余計な</code>というブログ表示用のHTMLタグが表示されてしまっていたのを修正しました

---(ここから)
Option Explicit
Dim args, arg
Dim BYTES
Dim sourceStream
Dim outputStream

'分割サイズ(byte)
BYTES = 1024000

Set args = WScript.Arguments

If args.Count <> 1 Then
WScript.Echo "Drag and drop only one file."
WScript.Quit
End If

Dim InputFilename
Dim OutputFilename
Dim objFS, ret, objFile

InputFilename = args(0)

Set args = nothing

Set objFS = CreateObject("Scripting.FileSystemObject")
ret = objFS.FileExists(InputFilename)
If ret Then
Set objFile = objFS.GetFile(InputFilename)
If objFile.Size < BYTES Then
WScript.Echo "File size is too small. It requires more than " & FormatNumber(BYTES, 0) & " byte." & vbCrLf & InputFilename & vbCrLf & "(" & FormatNumber(objFile.Size, 0) & " byte)"
WScript.Quit
End If
WScript.Echo "A target file is " & InputFilename & vbCrLf & "(" & FormatNumber(objFile.Size, 0) & " byte)"
Set objFile = nothing
Else
WScript.Echo "No file."
WScript.Quit
End If

Set objFS = nothing

Set sourceStream = CreateObject("ADODB.Stream")
sourceStream.Type = 1
sourceStream.Open
sourceStream.LoadFromFile InputFilename
sourceStream.Position = 0

Set outputStream = CreateObject("ADODB.Stream")
outputStream.Type = 1
outputStream.Open
outputStream.Position = 0

Dim no

no = 0

Do While sourceStream.EOS = False
OutputFilename = InputFilename & "." & no
outputStream.Write sourceStream.Read( BYTES )
outputStream.SaveToFile OutputFilename, 2
outputStream.Close
outputStream.Open
no = no + 1
Loop

WScript.Echo InputFilename & " -> Success : " & no

sourceStream.Close
outputStream.Close

Set sourceStream = nothing
Set outputStream = nothing

---(ここまで)

※自分用に作ったものなので、実行環境や入出力の仕様は決めうちで、エラー処理も省略しています。
 挙動を確認の上、自己責任でご利用ください


ソースをカスタマイズして利用頂いて結構です。間違い等がありましたら、コメント頂けると助かります。