• ベストアンサー

WSHファイルからFTPを利用してダウンロードする

batファイル,もしくはWSHファイルを使用してのFTPサーバからのファイルダウンロードを行う際の記述方法について質問致します。 行いたいことはFTPサーバ側に日毎のディレクトリが作成され その中に格納されるテキストファイルを自動でローカルの指定ディレクトリに上書きする手順になります。 WSHに関しては全くの素人なので非常に苦戦しております… FTPサーバ側 /@day/*.txt @dayには本日の日付が2桁で入ります。 1月1日なら01、2月23日なら23 Local保存側 D:\temp お手すきの時にでもご教授頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

FTPコマンドには詳しくないのですがWSHはわかります。手順はこんな感じでしょうか。 (1)FTPコマンドを記述したファイルのテンプレートを作成しておく。 (2)WSHでテンプレートから本日のFTPのためのファイルを作成する。 (3)WSHでFTP -s:ファイル名 ホスト名 を実行する。 そこで(2)の方法ですけれども、例えばFTPコマンドを記述したファイルが C:\FTPtemplate.txt にあり、その中に本日の日付にしたい文字 @day が埋め込んであるものとします。@day を本日の日付2桁に書き換えて C:\FTPtoday.txt を作成するWSH JScriptは下記になります。 // FTPreplace.js var Ifile="C:\\FTPtemplate.txt"; var Ofile="C:\\FTPtoday.txt"; var Fs =WScript.CreateObject("Scripting.FileSystemObject"); var ForReading=1, ForWriting=2; var Itxt, Otxt, Iall, Oall, dd, re; Itxt=Fs.OpenTextFile(Ifile, ForReading); Iall=Itxt.ReadAll(); Itxt.Close(); dd=(new Date()).getDate().toString(10); if (day.length==1) day="0"+day; re=/@day/gm; Oall=Iall.replace(re, dd); // 全ての@dayを今日のddに置き換える Otxt=Fs.OpenTextFile(Ofile, ForWriting, true); // 上書き Otxt.Write(Oall); Otxt.Close(); // ここまで あとはWSHのRunメソッドでFTPコマンドを実行すればよいと思います。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsmthrun.asp

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.2

ANo.1のコードの変数名に迷いがありました。すみません。 dd=(new Date()).getDate().toString(10); if (day.length==1) day="0"+day; ↓ dd=(new Date()).getDate().toString(10); if (dd.length==1) dd="0"+dd;

yukinko_yk
質問者

お礼

上記のとおり書き換えたらとりあえず動きましたー ものすごい低スキルなもんんで下記のようなbatで動かしてたんですが SHIMAPEE様の書かれたコードの方がスマートですよね・・ del D:\WSHJOB\ftptempdata.txt set dt=%date% set dd=%dt:~-2% echo open ###.###.###.###>> D:\WSHJOB\ftptempdata.txt echo ID>> D:\WSHJOB\ftptempdata.txt echo PW>> D:\WSHJOB\ftptempdata.txt echo ascii>> D:\WSHJOB\ftptempdata.txt echo lcd D:\textdata>> D:\WSHJOB\ftptempdata.txt echo prompt off>> D:\WSHJOB\ftptempdata.txt echo mget /%dd%/*.txt>> D:\WSHJOB\ftptempdata.txt echo bye>> D:\WSHJOB\ftptempdata.txt ftp -s:D:\WSHJOB\ftptempdata.txt del D:\WSHJOB\ftptempdata.txt これを機にWSHの勉強を始めてみます。

すると、全ての回答が全文表示されます。

関連するQ&A