読者です 読者をやめる 読者になる 読者になる

タスクスケジューラから実行した場合のみ%HOMEDRIVE%と%HOMEPATH%がセットされない??

Windowsのタスクスケジューラからrsyncを実行しようとして上手くいかない部分があったのでメモしておこうと思います。Windows用rsyncとしてcwRsyncを使用します。cwRsyncは、cygwinに含まれるrsyncのみのパッケージです。

データをSSH経由でLinuxサーバにコピーするバッチファイルを作成してタスクスケジューラに設定していたのですが、実行してみると次のようなメッセージでストップしていました。

Could not create directory '/home/w650/.ssh'.

cwRsync付属のバッチでは以下のようにHOMEを設定しているのですが、

REM Set HOME variable to your windows home directory. That makes sure 
REM that ssh command creates known_hosts in a directory you have access.
SET HOME=%HOMEDRIVE%%HOMEPATH%

タスクスケジューラから実行した場合のみ、%HOMEDRIVE%と%HOMEPATH%の環境変数がセットされないことが原因だったようです。ただし、Windows2003Serverのみで、XPではセットされていました。%USERPROFILE%は利用できるようなので、HOMEの指定を次のように変更しました。

SET HOME=%USERPROFILE%

次のサポート情報が該当するかと思いhotfixを取得してみましたが、新しいバージョンがインストールされているトいうメッセージが表示されたため関係ないようです。
The %HOMEDRIVE% environment variable does not point to the partition that hosts the user profiles in Windows Server 2003