Show page source of script_commands #121833

= コマンドリファレンス

このページでは、マクロスクリプトやコンソールモードなどで利用できるWinSCPのコマンドについて説明しています。

[[PageOutline(start=2)]]


== スクリプトコマンド ==
WinSCPは以下で紹介するコマンドをサポートしています。また、「help」コマンドで同様のヘルプを参照することが可能です。


== スクリプトの文法 == #syntax

スペースを含むパラメータは、ダブルクォート(")で囲みます。また、パラメータにダブルクォートを使用したい場合は次のようにダブルクォート2つを続けることで代替します。
{{{
put "スペース付き ファイル名と""ダブルクォート"".html"
}}}

また、「%環境変数名%」という形でスクリプトから環境変数を参照できます。環境変数の値にスペースが含まれる可能性を考慮し、通常はダブルクォートで囲って利用します。次の例では、環境変数「FILE_TO_UPLOAD」の値を参照しています。
{{{
put "%FILE_TO_UPLOAD%"
}}}

スクリプトに引数を与え、それをスクリプト内で参照することもできます。スクリプトに引数を与えるには、「[commandline#scripting /parameter]」オプションを使います。スクリプト内から引数にアクセスするには、「%N%」という形を用います。「N」は参照する引数を指定する整数で、たとえば1番目の引数を参照するなら「%1%」、2番目の引数なら「%2%」、のようになります。こちらも通常は次のようにダブルクォートで囲って利用します。

{{{
put "%1%"
}}}

なお、WinSCPではファイル名の大文字小文字を区別しますので、ファイル名をスクリプト内で指定する場合は注意してください。

== call == #call
SFTPおよびSCPの場合、リモート側でシェルコマンドを実行します。FTPの場合、FTPコマンドを実行します。

{{{
  call <コマンド>
}}}

もし利用しているセッションでリモートコマンドの実行が制限されている場合、別のセッションが自動的にオープンされます。なお、このコマンドはユーザーの入力を受け付けるべきではありません。

エイリアス: !

XMLログ要素: [logging_xml#call call]

例:
{{{
call mysqldump --opt -u USERNAME --password=PASSWORD --all-databases > all_databases.sql
call gzip -c all_databases.sql > all_databases.gz
}}}

== cd == #cd
リモート側のカレントディレクトリを変更します。
{{{
  cd [ <ディレクトリ> ]
}}}

もしディレクトリが省略された場合、ホームディレクトリをカレントディレクトリとします。

例:
{{{
cd /home/martin
cd
}}}

== checksum == #checksum
リモートファイルのチェックサムを計算します。

{{{
  checksum <アルゴリズム> <ファイル>
}}}

使用するチェックサム アルゴリズムの名前です。[https://www.iana.org/assignments/hash-function-text-names/hash-function-text-names.xhtml アルゴリズムの IANA 名]を使用するか、サーバーがサポートする独自のアルゴリズムの名前を使用します (SFTP プロトコルのみ)。一般的にサポートされているアルゴリズムは、sha-1 と md5 です。

XMLログ要素: [logging_xml#checksum checksum]

例
{{{
checksum sha-1 index.html
}}}

== chmod == #chmod
リモートファイルのパーミッションを変更します。

{{{
  chmod <モード> <ファイル> [ <ファイル2> ... ]
}}}

モードは3桁もしくは4桁の8進数で指定します。ファイル名にはワイルドカードが使用できます。

XMLログ要素: [logging_xml#chmod chmod]

例:
{{{
chmod 644 index.html about.html
chmod 1700 /home/martin/public_html
chmod 644 *.html
}}}

== close == #close
セッションを閉じます。

{{{
  close [ <セッション> ]
}}}

指定したセッション番号のセッションを閉じます。セッション番号が指定されなかった場合は現在選択されているセッションを閉じます。

例:
{{{
close 1
close
}}}

== cp == #cp
リモートファイルを複製します。

{{{
  cp <ファイル1> [ <ファイル2> ... ] [ <ディレクトリ>/ ][ <新しい名前> ]
}}}

宛先ディレクトリまたは新しい名前またはその両方を指定する必要があります。宛先ディレクトリはスラッシュで終わる必要があります。新しい名前の代わりに[操作マスク]を使用できます。ファイル名を[ワイルドカード]に置き換えて、複数のファイルを選択できます。

コマンドに影響する[オプション]:failonnomatch

XMLログ要素:[logging_xml#cp cp]

例
{{{
cp index.html backup/
cp index.html *.bak
cp index.html public_html/about.*
cp public_html/index.html public_html/about.html /home/martin/*.bak
}}}

== echo == #echo
スクリプトの出力にメッセージを出力します。

{{{
  echo <メッセージ>
}}}

例
{{{
echo すべてのレポート ファイルをアップロードしています...
}}}

== exit == #exit
すべてのセッションを閉じてプログラムを終了します。

{{{
  exit
}}}

エイリアス: bye

== get == #get
リモートファイルをローカルディレクトリにダウンロードします。
{{{
  get <ファイル> [ [ <ファイル2> ... ] <ディレクトリ>\[ <新しいファイル名> ] ]
}}}

getコマンドでは複数のファイルを同時にダウンロード可能です。もしパラメータが1つだけの場合、指定したファイルがローカル側のカレントディレクトリに保存されます。2つ以上のパラメータが指定された場合、最後のパラメータで指定したローカルディレクトリに指定したファイルが保存されます。保存先ディレクトリを指定する場合、ディレクトリ名の末尾が「\」である必要があります。また、ダウンロードしたファイルを別の名前で保存することもできます。なお、ファイル名の指定にはワイルドカードが利用できます。

[script_commands#option option]コマンドも参照してください。

エイリアス: recv

オプション:
|| オプション名         || 説明  ||
|| -delete              || 転送後にダウンロードしたリモートファイルを削除します。excludeおよびincludeオプションは無視されます。 ||
|| -resume              || 可能であればレジュームを行います。SFTP/FTPでのみ利用可能で、-appendオプションと同時には使えません。  ||
|| -append              || ダウンロードしたファイルを、ローカルファイルの末尾に追加します。SFTPでのみ利用できます。-resumeオプションと同時には使えません ||
|| -preservetime        || タイムスタンプを変更しません ||
|| -nopreservetime      || タイムスタンプを変更します ||
|| -speed=<kibps>       || 転送速度を制限します  ||

getコマンドに影響する[script_commands#option オプション]は次のとおりです。
{{{
transfer, confirm, exclude(-deleteには影響しません), include(-deleteには影響しません), reconnecttime
}}}

XMLログ要素: [logging_xml#download download], [logging_xml#rm rm] (-deleteオプション)

例:
{{{
get index.html
get -delete index.html about.html .\
get index.html about.html d:\www\
get public_html/index.html d:\www\about.*
get *.html *.png d:\www\*.bak
}}}

変更されたファイルのみをダウンロードする[script_commands#synchronize synchronize]コマンドも参照してください。

== help == #help
ヘルプを表示します。

{{{
  help [ <コマンド> [ <コマンド2> ... ] ]
}}}

パラメータなしで実行すると、コマンド一覧が表示されます。また、パラメータとして特定のコマンドを指定すると、そのコマンドのヘルプを参照できます。

エイリアス: man

例:
{{{
help ls
help
}}}

== keepuptodate == #keepuptodate
ローカルディレクトリの変更を監視し、変更されたファイルをリモートディレクトリにアップロードして反映させます。

{{{
  keepuptodate [ <ローカルディレクトリ> [ <リモートディレクトリ> ] ]
}}}

ディレクトリが指定されなかった場合、カレントディレクトリが対象となります。Ctrl-Cで監視を終了できます。

注:ファイルが上書きされる場合でも確認は行われません

オプション:
|| オプション           || 説明 ||
|| -delete              || 存在しないファイルは削除します ||
|| -permissions=<mode>  || パーミッションを指定します ||
|| -nopermissions       || デフォルトのパーミッションを使用します ||
|| -speed=<kibps>       || 転送速度を制限します ||

keeptoupdateコマンドに影響する [script_commands#option オプション]は次の通りです。
{{{
transfer, exclude, include, reconnecttime
}}}

XMLログ要素: [logging_xml#upload upload], [logging_xml#touch touch], [logging_xml#chmod chmod] (-permissionsオプション付きの場合), [logging_xml#rm rm] (-deleteオプション付きの場合)

例:
{{{
keepuptodate -delete
keepuptodate d:\www /home/martin/public_html
}}}


== lcd == #lcd
ローカルのカレントディレクトリを変更します。すべてのセッションに影響します。

{{{
  lcd <ディレクトリ>
}}}

例:
{{{
lcd d:\
}}}

== lls == #lls
ローカルディレクトリ内のファイル一覧を表示します。

{{{
  lls [ <ディレクトリ> ]\[ <ワイルドカード> ]
}}}

ディレクトリが省略された場合、カレントディレクトリが対象となります。ワイルドカードで表示するファイルを絞り込むことも可能です。

エイリアス: ll

例:
{{{
lls *.html
lls d:\
lls
}}}

== ln == #ln
リモートディレクトリ内に[task_link シンボリックリンク]を作成します。

{{{
  ln <target> <symlink>
}}}

エイリアス: symlink

例:
{{{
ln /home/martin/public_html www
}}}

== lpwd == #lpwd
ローカルのカレントディレクトリ名表示します。

{{{
  lpwd
}}}

== ls == #ls
指定したディレクトリ内のファイル一覧を表示します。

{{{
  ls [ <ディレクトリ> ]/[ <ワイルドカード> ]
}}}

リモートディレクトリ内の詳細なファイル一覧を表示できます。ディレクトリ名が指定されなかった場合、リモートのカレントディレクトリが対象となります。ワイルドカードで表示するファイルを絞り込むこともできます。

エイリアス: dir

XMLログ要素: [logging_xml#ls ls]

例:
{{{
ls *.html
ls /home/martin
ls
}}}

== mkdir == #mkdir
リモートディレクトリを作成します。

{{{
  mkdir <ディレクトリ>
}}}

XMLログ要素: [logging_xml#mkdir mkdir]

例:
{{{
mkdir public_html
}}}

== mv == #mv
リモートファイルを移動もしくはリネームします。

{{{
  mv <ファイル> [ <ファイル2> ... ] [ <ディレクトリ>/ ][ <新しいファイル名> ]
}}}

移動先ディレクトリもしくは新しいファイル名の少なくともいっぽうは指定されている必要があります。移動先ディレクトリを指定する場合、ディレクトリ名は「/」で終わっている必要があります。新しいファイル名の代わりにOperation maskを使用することもできます。また、ワイルドカード]を使用して複数のファイルを選択することも可能です。

エイリアス: rename

XMLログ要素: [logging_xml#mv mv]

例:
{{{
mv index.html public_html/
mv index.html about.*
mv index.html public_html/about.*
mv public_html/index.html public_html/about.html /home/martin/*.bak
mv *.html /home/backup/*.bak
}}}

== open == #open
指定したホストに接続します。

{{{
  open <セッション名>
  open [ sftp|ftp|scp:// ][ <ユーザー名>[:パスワード]@]<ホスト名>[:<ポート番号>]
}}}


引数には保存されたセッション名を指定できるほか、ホスト名およびユーザー名、ポート番号、プロトコルなどを指定して接続を行うことも可能です。

オプション:
|| オプション               ||説明 ||
|| -privatekey=<秘密鍵ファイル>        || [public_key#private 秘密鍵]のパス ||
|| -timeout=<秒>           || タイムアウトまでの秒数 ||
|| -hostkey="<鍵の指紋>" || 接続を許可する[ssh#verifying_the_host_key ホスト側の公開鍵]の指紋を指定。「;」で区切って複数の指紋を指定することも可能。指紋にはスペースが含まれるので、「"」で囲んで指定する。SFTPおよびSCPでのみ利用可能 ||
|| -certificate="<鍵の指紋>" || SSL/TLS認証において接続を許可するホスト側の認証情報を指定。「;」で区切って複数を指定することも可能。これにより、WinSCPでは自動的に[scripting#hostkey 認証を受け付ける]ことが可能。FTPSでのみ利用可能 ||
|| -passive                 || パッシブモードでの接続を行う。FTPでのみ利用可能 ||
|| -implicit                || Implicit TLS/SSL認証を使用。FTPSでのみ使用可能 ||
|| -explicitssl             || Explicit SSL認証を使用。FTPS protocolでのみ使用可能 ||
|| -explicittls             || Explicit TLS認証を使用。FTPS protocolでのみ使用可能 ||

XMLログ要素: [logging_xml session]

例:
{{{
open sftp://martin@example.com -hostkey="ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
open scp://test@example.com:2222 -privatekey=mykey.ppk
open ftps://martin@example.com -implicit -certificate="xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
open martin@example.com
open example.com
open
}}}

== option == #option
オプションの設定および確認を行います。

{{{
  option [ <オプション> [ <値> ] ]
}}}

もしパラメータを付けずに実行すると、現在のオプション設定一覧が表示されます。もしオプションを指定して実行すると、指定したオプションの現在の値が表示されます。オプションおよび値を指定して実行すると、そのオプションを指定した値に設定します。ここで変更したオプションの値は保存されません。


設定できるオプション are:
|| オプション名 || 値                    || 説明 ||
|| echo         || on/off                || コマンドの実行時にローカルエコーを表示するかを設定します ||
|| batch        || on/off/abort/continue || バッチの実行モードを設定します。バッチモードをOnにすると、問い合わせが必要な処理については自動的に「いいえ」が選択されたものとして自動実行されます。Onに設定する場合、ファイルの上書きを防ぐためにconfirmオプションをoffにしておくことを推奨します。「abort」に設定すると、エラー発生時に自動的に処理が中断されるようになります。「continue」に設定すると、エラーが発生しても処理は継続されます。 ||
|| confirm     || on/off || ファイルの上書きなどの確認メッセージを行うかどうかを設定します。[script_commands#get get]および[script_commands#put put]コマンドに影響します。 ||
|| transfer    || binary/ascii/automatic || 転送モードを指定します。「automatic」を選択すると、ファイルの拡張子によって自動的に転送モードが選択されます。[script_commands#get get]および [script_commands#put put]、 [script_commands#synchronize synchronize]、[script_commands#keepuptodate keepuptodate]コマンドに影響します。||
|| exclude、include    || clear/<マスク>\[;<マスク2>...\] || 処理対象とするファイルを指定します。[script_commands#get|get]、[script_commands#put put]、[script_commands#synchronize synchronize]、[script_commands#keepuptodate keepuptodate]コマンドに影響します。 ||
|| reconnecttime    || off/<秒> || ここで指定した時間だけ反応がなかった場合、セッションが切断されたと見なして再接続を行います。[script_commands#get get]、[script_commands#put put]、[script_commands#synchronize synchronize]、[script_commands#keepuptodate keepuptodate] コマンドに影響します。||
|| failonnomatch    || off/on || 操作対象のファイルを選択するために使用されるワイルドカードが一致するファイルがない場合、またはディレクトリ同期で違いが見つからない場合に、コマンドが失敗するかどうかを切り替えます。[script_commands#get get]、[script_commands#put put]、[script_commands#rm rm]、[script_commands#mv mv]、[script_commands#chmod chmod]、[script_commands#ls ls]、[script_commands#lls lls]、[script_commands#synchronize synchronize]コマンドに影響します。||

エイリアス: ascii(asciiモードでの転送に切り替え)、binary(binaryモードでの転送に切り替え)

例:
{{{
option transfer
option confirm off
option include "*.html; */"
option exclude "*.tpl.php"
option exclude "*.mp3; *.mp4; *.lnk; *.exe; *.msi; My Pictures; My Music; My Videos;"
option
}}}

注:オプションの再設定を行った場合、値は上書きされ以前の値はリセットされます。

== put == #put
ファイルのアップロードを行います。

{{{
  put <ファイル> [ [ <ファイル2> ... ] <ディレクトリ>/[ <新しいファイル名> ] ]
}}}


putコマンドでは複数のファイルを同時にアップロード可能です。もしパラメータが1つだけの場合、指定したファイルをリモート側のカレントディレクトリにアップロードします。2つ以上のパラメータが指定された場合、最後のパラメータで指定したリモートディレクトリに指定したファイルをアップロードします。保存先ディレクトリを指定する場合、ディレクトリ名の末尾が「/」である必要があります。また、指定したファイルを別の名前でアップロードすることもできます。なお、ファイル名の指定にはワイルドカードが利用できます。

[script_commands#option option]コマンドも参照してください。


オプション:
|| オプション名         || 説明  ||
|| -delete              || 転送後にローカルディレクトリからアップロードしたファイルを削除します。excludeおよびincludeオプションは無視されます。 ||
|| -resume              || 可能であればレジュームを行います。SFTP/FTPでのみ利用可能で、-appendオプションと同時には使えません。  ||
|| -append              || アップロードしたファイルを、指定したファイルの末尾に追加します。SFTPでのみ利用できます。-resumeオプションと同時には使えません ||
|| -preservetime        || タイムスタンプを変更しません ||
|| -nopreservetime      || タイムスタンプを変更します ||
|| -permissions=<モード>  || パーミッションを指定します。SFTP/SCPでのみ使用できます ||
|| -nopermissions       || デフォルトのパーミッションでアップロードします ||
|| -speed=<kibps>       || 転送速度を制限します  ||


エイリアス: send

putコマンドに影響する[script_commands#option オプション]は次のとおりです。
{{{
transfer, confirm, exclude(-deleteには影響しません), include(-deleteには影響しません), reconnecttime
}}}


XMLログ要素: upload, chmod(-permissionsオプション付きの場合)、touch(-preservetimeオプション付きの場合)

例:
{{{
put index.html
put -delete index.html about.html ./
put -permissions=644 index.html about.html /home/martin/public_html/
put d:\www\index.html about.*
put *.html *.png /home/martin/backup/*.bak
}}}

変更されたファイルのみを転送するには、[script_commands#synchronize synchronize]コマンドを参照してください。

== pwd == #pwd
アクティブなセッションのリモート側カレントディレクトリを表示します。

{{{
  pwd
}}}

== rm == #rm
リモート側のファイルを削除します。

{{{
  rm <ファイル> [ <ファイル2> ... ]
}}}

もし[ui_login_environment#recycle_bin リモート側ゴミ箱]が設定されている場合、ファイルを削除する代わりに設定されたゴミ箱ディレクトリにファイルが移動されます。ワイルドカードで複数のファイルを指定することも可能です。

XMLログ要素: [logging_xml#rm rm]

例:
{{{
rm index.html
rm index.html about.html
rm *.html
}}}

== rmdir == #rmdir
リモート側のディレクトリを削除します。

{{{
  rmdir <ディレクトリ> [ <ディレクトリ2> ... ]
}}}

もし[ui_login_environment#recycle_bin リモート側ゴミ箱]が設定されている場合、ファイルを削除する代わりに設定されたゴミ箱ディレクトリにファイルが移動されます。

XMLログ要素: [logging_xml#rm rm]

例:
{{{
rmdir public_html
}}}

== session == #session
セッションの切り替えや表示を行います。

{{{
  session [ <セッション> ]
}}}

番号で指定したセッションをアクティブセッションに切り替えます。もしセッション番号が指定されなかった場合、現在のセッション一覧を表示します。

例:
{{{
session 1
session
}}}

== stat == #stat
リモート ファイルの属性を取得します。

{{{
  stat <ファイル名>
}}}

自動化する際、このコマンドでファイルの存在を確認することができます。

XMLログ要素: [logging_xml#stat stat]

== synchronize == #synchronize
ディレクトリの同期を行います。

{{{
  synchronize local|remote|both [ <ローカルディレクトリ> [ <リモートディレクトリ> ] ]
}}}

もし「local」オプションを指定した場合、リモートディレクトリからローカルディレクトリへの同期が実行されます。「remote」オプションを指定した場合、ローカルディレクトリからリモートディレクトリへの同期が実行されます。「both」オプションを指定した場合、ローカルディレクトリとリモートディレクトリの両方が同期されます。

ディレクトリが指定されなかった場合、カレントディレクトリが同期対象となります。

注:このコマンドではファイルの上書きに関する警告を行いません。

オプション:
|| オプション                   || 説明 ||
|| -delete              || 同期元にないファイルを同期先から削除します。「both」モードでは無視されます ||
|| -mirror              || [task_synchronize_full#synchronization_mode ミラーモード](古いファイルについても同期される)で実行します。「both」モードでは無視されます。  ||
|| -criteria=<基準> || 同期のための比較基準を指定します。「time」「size」「either」(以前のバージョンでは「both」でした。「both」モードは無視されます)「none」が選択できます。||
|| -permissions=<モード>  || ファイル保存時のパーミッションを指定します ||
|| -nopermissions       || デフォルトのパーミッションでファイルを保存します ||
|| -speed=<kibps>       || 転送速度を制限します ||

コマンドに影響する [script_commands#option オプション]は次の通りです。
{{{
transfer, exclude, include, reconnecttime
}}}


XMLログ要素: [logging_xml#download download]、[logging_xml#upload upload]、[logging_xml#touch touch]、[logging_xml#chmod chmod]、[logging_xml#rm rm]

例:
{{{
synchronize remote -delete
synchronize both d:\www /home/martin/public_html
}}}