プロが教えるわが家の防犯対策術!

batファイル,もしくはWSHファイルを使用してのFTPサーバからのファイルダウンロードを行う際の記述方法について質問致します。

行いたいことはFTPサーバ側に日毎のディレクトリが作成され
その中に格納されるテキストファイルを自動でローカルの指定ディレクトリに上書きする手順になります。
WSHに関しては全くの素人なので非常に苦戦しております…

FTPサーバ側
/@day/*.txt
@dayには本日の日付が2桁で入ります。
1月1日なら01、2月23日なら23

Local保存側
D:\temp

お手すきの時にでもご教授頂ければ幸いです。

A 回答 (2件)

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 …
    • good
    • 0

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;
    • good
    • 0
この回答へのお礼

上記のとおり書き換えたらとりあえず動きましたー

ものすごい低スキルなもんんで下記のような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の勉強を始めてみます。

お礼日時:2007/06/25 18:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!