LoginSignup
11

More than 5 years have passed since last update.

WinSCPでファイルを取得する処理を自動化したい

Posted at

WinSCPのGUIをつかって手動でファイルをダウンロードするのが、手間だと感じる時があれば、それは、WinSCPコマンドラインの出番です。

WinSCP-Logo.png

WinSCPにはWinSCP.comというコマンドラインのオプションがあります。
コマンドラインを使えれば、batファイルを作成して、タスクスケジューラーで定期実行させることもできますし、イベントトリガーで実行させることもできます。

以下、サンプルコードです。
いろいろなやり方がありますが、一例として、
接続先サーバからファイルをgetする処理を記載しています。

bat
@REM
@echo off

cls
echo START
echo.
echo cd /zzz/xxx > SCPcom.scp
echo lcd "C:\xxx/zzz" >> SCPcom.scp
echo bin >> SCPcom.scp
echo get vvv >> SCPcom.scp
echo close >> SCPcom.scp
echo exit >> SCPcom.scp

"C:\Program Files\WinSCP\WinSCP.com" /ini="C:\Program Files\WinSCP\WinSCP.ini" [WinSCPName] /console /script=.\SCPcom.scp

echo.
echo ScriptEnd
echo.
exit

処理の流れ

①ファイル(ここでは"SCPcom.scp"としています)に、実行したいコマンドを書き込みます。
②WinSCP.comを使用して、①で作ったファイルを読み込んで実行する。

流れは上記のように単純です。
変更箇所と注意点を見ていきましょう。

変更箇所

  • cd,lcd の箇所は、リモート先、ローカルのディレクトリを指定しましょう。
  • bin はバイナリモードの指定です。必要に応じて変更しましょう。
  • get でファイルをゲットしてきます。対象ファイル名を書きましょう。
  • close,exit で接続を終了します。
  • "C:\Program Files ではじまる次の行で、いよいよWinSCP実行です。WinSCP.comのファイル、iniファイルのパスを指定します。
  • [WinSCPName] には、WinSCPのGUIで設定した、接続先の設定名を記載しましょう。
  • script= は、コマンドをリダイレクトで書き込んだファイルを指定します。

注意点

  • 基本的にはbatファイルとして実行しますので、書き方はそれに準じる形でOKです。
  • コマンド用のファイルに書き込むので、リダイレクト( > もしくは >> )を使ってファイルへ書き込んでいきます。

他にも様々なコマンドラインがあります。
詳細はこのページなどを参照してください。

さいごに

WinSCPやFTPはファイル操作をするときに、非常に多く利用すると思いますが、
ある程度、固定的な内容であれば、自動化したほうが良いでしょう。

スクリプトを組む時間はかかりますが、その後は、ボタンひとつで、もしくは自動実行で作業できてしまうことでしょう!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11