†REXXのどろぬま†
作成開始日 2025.05.05
最終更新日
なお、この例では、カレントディレクトリにあるhtm/htmlファイルの更新をチェックしている(サブディレクトリは対象外)。そして、ftpサーバ上の「/html」にある《カレントディレクトリと同名のディレクトリ》にファイルをアップしている。
たとえば、ローカルのファイルが「E:\MyHomepage\diary」にあれば、更新ファイルはftpサーバ上の「/htm/diary」にアップロードされる。アップロード先は変数dnameで設定しているので、必要に応じて書き換える。同様に、アップロードするファイルの拡張子は変数maskで変更可能。
/****************************************************************************/ /* fud.cmd : ftp update uploader 2025.05.08 */ /* htm/htmlファイル限定 maskの設定で変更可能 */ /* STREAM query datetime版 秒単位まで判断 */ /****************************************************************************/ Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' Call SysLoadFuncs /*** 初期設定 ***/ /*プログラムのパスとユーザー名、パスワードはそれぞれの環境合わせて設定する*/ ncftp = 'C:\.....\ncftpput -u username -p password' /*同様に接続するサーバ名も各自の環境に合わせて設定する*/ srv = 'host.name.ne.jp' /*アップロード先のディレクトリ:以下の例は/htmlの下のローカルと同名のディレクトリ*/ dname = '/html/'||filespec('N',DIRECTORY()) /* カレント・ディレクトリ */ updat = DIRECTORY()'\@update.dat' /* 更新日付データ */ mask = '*.htm?' /* htm/html対応 */ /*** 更新日付のデータがない場合の処理:現在日時で仮作成 ***/ IF STREAM(updat,'C','query exist')='' THEN Do SAY '*** no update data file' SAY '*** save current date&time' SAY '*** edit :' updat '@ECHO' date('Ordered') time('Normal')'>' updat EXIT End /*** 更新日時データの読み込み ***/ rc=STREAM(updat,'C','O') last_dt=LINEIN(updat) rc=STREAM(updat,'C','C') SAY last_dt '[last update]' SAY '-------------------------------' /*** メインルーチン ***/ rc=SysFileTree(mask,'file','FO') files='' Do n=1 to file.0 dt=STREAM(file.n,'C','query datetime') PARSE VAR dt mm '-' dd '-' yy tm dmy /* dmyはバグ対策:必須 */ dt=yy'/'mm'/'dd tm IF dt>last_dt THEN Do SAY dt FILESPEC('N',file.n) files=files' 'file.n End End IF files='' THEN DO; SAY '*** no upload files ***'; EXIT; END; SAY '*** upload ok ? ***' PULL st IF st='N' THEN EXIT /* PULLの入力は大文字化される */ /* アップロードの実行 */ ncftp srv dname files /*更新日時の書き込み*/ '@echo' date('Ordered') time('Normal')'>' updat EXIT