【bat】バッチファイルでWinSCPを使ってSFTP接続してファイルの送受信を行う方法

【bat】バッチファイルでWinSCPを使ってSFTP接続してファイルの送受信を行う方法 bat

Windows環境でSFTPを使ったファイル転送を自動化したい場合、WinSCPとバッチファイルを組み合わせることで、簡単に実現できます。本記事では、WinSCPを利用してバッチ処理によるSFTP接続とファイルの送受信を行う方法を、ステップごとに解説します。

WinSCPとは?

WinSCPは、Windows用のSFTP・FTPクライアントソフトで、GUIだけでなくコマンドラインやスクリプトによる自動処理にも対応しています。定期的なバックアップやファイルの同期など、幅広い用途で活用されています。

WinSPCのダウンロード(公式サイト)

スクリプトファイルの作成

まず、WinSCPに渡すスクリプトファイルを作成します。ファイル名は script.txt など任意で構いません。以下はローカルのテキストファイルをリモートサーバーへアップロードする例です。

open sftp://username:password@example.com:22/
lcd C:\local\path
cd /remote/path
put *.txt
close
exit
  • open: SFTP接続情報を記述(ユーザー名、パスワード、ホスト名、ポート)
  • lcd: ローカルフォルダのパス
  • cd: サーバー上の保存先ディレクトリ
  • put: ローカル→リモートへファイル送信(逆にする場合は get)

バッチファイルの作成

次に、上記スクリプトを実行するバッチファイル(例:send_files.bat)を作成します。

@echo off
set SCRIPT_PATH=C:\path\to\script.txt
set WINSCP_PATH="C:\Program Files (x86)\WinSCP\WinSCP.com"

%WINSCP_PATH% /script=%SCRIPT_PATH%

pause

このバッチファイルをダブルクリックするだけで、自動的にSFTP接続してファイルが転送されます。

セキュリティ対策 パスワードの保護

スクリプト内にパスワードを直接記述するのは推奨されません。代替手段として、WinSCPの「セッション保存機能」を使うことで、パスワードを記録せずに接続が可能です。

open "my_saved_session"

WinSCP GUIで接続設定を保存した後、セッション名を指定することで、スクリプトから呼び出せます。

ログファイルを出力する

実行ログを保存しておきたい場合は、以下のようにログ出力を設定します。

%WINSCP_PATH% /log="C:\logs\winscp.log" /script=%SCRIPT_PATH%

転送成功・失敗の確認に役立ちます。

まとめ

バッチファイルとWinSCPを組み合わせることで、SFTPによるファイルの送受信を簡単に自動化できます。バックアップ、定時送信、ファイル集配など、さまざまな場面で役立つ手法です。