複数行のnet sendメッセージ

以前書いた、環境変数に改行文字をセットの話だが、今一ついい使い道が思い浮かばなかった。今回、net send での複数行メッセージ送出に使うことを思いついた。

@echo off
setlocal enabledelayedexpansion
set DEST=%2
if not defined DEST set DEST=%COMPUTERNAME%
set MSG=
for /f "usebackq delims=" %%A in ("%~1") do (
set MSG=!MSG!^

%%A
)
net send %DEST% "!MSG!"

引数1のファイルの内容を引数2の宛先に net send する。ただし、文字数に制約があるようで、長い場合は切り縮められる。宛先が * の場合はさらに送れる文字数は少ないようだ。

また、特殊文字を考慮していないので、ファイル中にある " ^ は消える。! があるとエラーになるケースもある。その他の特殊文字は単独文字での簡単なテストでは大丈夫そうだが、注意が必要。普通の日本語メッセージなら大丈夫。