WinSCPスクリプト入門:コマンドやバッチファイルとの連携による自動処理

 SFTPやFTPS、SCPといったファイルの暗号化転送に対応するソフトの1つにWinSCPがある。WinSCPは使いやすいユーザーインターフェイスが特徴だが、GUIを利用せずにコマンドラインで操作したり、テキスト形式で記述された処理を実行するスクリプト機能(バッチ処理機能)なども備えている。本記事ではこのコマンド機能の基本的な使い方や、よく利用されると思われるコマンド機能を紹介する。

 WinSCPはFTP/SFTP/FTPS/SCPに対応したファイル転送ツールだ。かつてファイルのアップロード/ダウンロードにはFTPが使用されることが多かったが、FTPはログイン情報やファイルなどを暗号化せずにやり取りするため、通信内容を盗聴してこれらの情報を盗み出すことが可能である。そのため近年では、暗号化通信を行うSFTP/FTPSやSCPの利用を推奨されることが多い。

 SFTP/FTPS/SCPに対応するクライアントはいくつかあるが、WinSCPはフリーで利用でき、また使いやすいユーザーインターフェイスを備えているため人気が高い。海外で開発されているものの、メニューや各種メッセージなどは日本語化されているため、英語に不慣れなユーザーでも問題なく利用できる。

 WinSCPはGUIでの利用が一般的だが、実はコマンドプロンプトで対話的に各種コマンドを実行する「コンソールモード」も備えている(図1)。この機能はあまり知られていないが、ワイルドカードで処理対象のファイルを指定できるなど、状況によっては非常に有用だ。また、コマンドを記述したスクリプトファイルを読み込んで実行する機能もある。定型処理を自動的に実行する場合などに便利である。

図1 WinSCPのコンソールモード
図1 WinSCPのコンソールモード

 なお、WinSCPのインストールやGUIでの基本的な使い方についてはWindows用SCP/SFTPクライアント「WinSCP」の使い方、設定という記事にまとめられているので、そちらを参照して欲しい。

WinSCPをコマンドラインで利用する:コンソールモードでの起動

 WinSCPのインストールフォルダ(デフォルトではC:\Program Files\WinSCP以下)にインストールされている「WinSCP.com」を実行すると、WinSCPがコンソールモードで起動する。コンソールモードでは「open」や「get」、「put」といった各種コマンドを打ち込んで実行することで、ファイルの送受信やディレクトリの作成、パーミッションの変更といった各種処理を実行できる。

 たとえば、「172.27.4.89」というホストに接続するには次のように「open」コマンドを実行する。

winscp> open 172.17.4.69

 openコマンドを実行すると指定したホストへの接続が行われ、ユーザー名とパスワードの入力が求められる。また、相手が初めて接続するホストだった場合はここでホスト鍵の情報が表示され、確認が求められる。

コンソールモードで利用できる基本的なコマンド

 コンソールモードで利用できるコマンド一覧はWinSCP日本語Wikiの「コマンドリファレンスにまとめられている。コマンドの詳細についてはそちらに譲り、ここではこれらを使った基本的な使用例を紹介しておこう。これらのコマンドはWindowsに標準で搭載されているコマンドラインベースのFTPクライアント(ftpコマンド)や、Linux/UNIXなどのftpコマンドと似たコマンド体系となっているため、これらに慣れているユーザーならすぐに使いこなせるだろう。

 なお、ファイル名を指定する場合など、コマンドにスペースを含む引数を与える場合は引数を「"」(ダブルクォート)で囲む必要がある。また、ダブルクォートを含む引数を指定する場合、その引数全体をダブルクォートで囲った上で、引数内のダブルクォートを「""」(ダブルクォート2つ)に置き換えればよい

 たとえば「test "hoge".html」というファイル名を引数として与える場合、次のように指定する。

"test ""hoge"".html"