Windows 上の scp を使って,簡単にファイルを送る

  例えば,ある決まったディレクトリに定期的にファイルを scp する必要がある,
  つまりサイトの更新などでファイルを一定のディレクトリに scp する場合に
  WinSCP とか使っていちいち GUI でやるのが面倒な人むけ.

- まず,PuTTY のサイトから PSCP を落としてくる
  http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

  適当なディレクトリに,pscp.exe を展開しておく.

- バッチファイル (scp.bat)

@echo off

set pscp=c:\putty\pscp.exe
set user=username
set host=example.com
set dir=/home/username

:target
if ""%1""=="""" goto scp
set args=%args% %1
shift
goto target

:scp
%pscp% -l %user% %args% %host%:%dir%


  pscp のパス,ユーザ名,ホスト名,対象となるディレクトリ名を記入して保存する.

- 実行
  scp したいファイルをバッチファイルに,ドロップする.
  パスフレーズを求めるプロンプトがでるので,パスフレーズを入れると scp 開始.

 「送る」に入れておいてもいい.

- コマンドプロンプトが閉じてしまうのがいやだ
  このままだと scp が終わったときにコマンドプロンプトが閉じてしまうので,
  これがいやな場合は,上記バッチファイルの最終行を以下のように修正する

cmd /K %pscp% -l %user% %args% %host%:%dir%


- パスフレーズをいちいち打ち込むのが面倒
  -pw オプションをつけることで解決できますが,危ないので全くお勧めしません.

%pscp% -l %user% -pw passphrase %args% %host%:%dir%


- ちなみに UNIX 上ではというと
  csh/tcsh の場合は,以下のように alias を作っておくだけで OK.

alias   scpfoo  'scp !\* user@host:/path/to'


  bash/zsh の場合は,function とか作れば OK な気がする.