• ベストアンサー

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

  • FTPで見えるファイルと見えないファイルがあります。

    FTPで見えるファイルと見えないファイルがあります。 CentOS5.4にvsftpdをインストールして、PCからFTP転送を行おうとしています。 /tmpディレクトリにファイルを転送すると、FTPツールに転送したファイルは表示されますが、 元々/tmpにあったファイルはFTP転送ツールに表示され無い状態となっています。 ・FTP転送ツールを再起動しましたが、転送したファイルしか見えません。 又、FTP転送ツールではなく、DOS窓上でFTP接続して、DIRで見た時も転送したファイルしか見えません。 このことから、FTPツールの問題ではなく、FTPサーバー側の問題を判断しました。 ・Linuxサーバを再起動しても、転送したファイルしか見えません。 ・Linuxサーバ上で、転送したファイルを"cp -p"でコピーした場合、コピーしたファイルはFTPツール上見えません。 現在Linux上では、 tmp>ll -rw-r--r-- 1 root root 2 5月 13 17:20 a1.txt -rw-r--r-- 1 root root 2 5月 13 17:20 a2.txt -rw-r--r-- 1 root root 2 5月 13 17:20 b1.txt となっているのですが、 a1.txt:FTP転送したファイル a2.txt:a1.txtを cp -p a1.txt a2.txtでコピーした b1.txt:viで作成した FTPコマンドで見ると、 ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 2 May 13 08:20 a1.txt というようにa1.txtしか見えません。 原因はわかりましたらご教授ください。よろしくお願いいたします。

  • WSHやVBSについて

    WSHやVBSを用いて以下のような動きをしてくれるスクリプトって出来ますか? (1)私のデスクトップからスクリプトファイルをクリック (2)ファイルがそのままFTPサーバーへ接続 (3)UserとPasswordを自動的に認証 (4)Aという特定のディレクトリへ移動して (5)そのディレクトリ内にある、全部のTXTファイルを対象にして、書き込まれている半角?を全角スペースへ置き換える

  • WSH

    こんにちわ WSHで以下のような処理は可能でしょうか。 複数のコンピュータのローカルデータを ファイルサーバに保存する。 Windows NT 4.0 workstationになります。 処理イメージ (1)それぞれのコンピュータ名を取得する。 (2)取得したコンピュータ名と同じディレクトリを ファイルサーバに作成する。 (3)自分と同じディレクトリに、ローカルデータを保存する。 よろしくお願いします。

  • FTP送信

    バッチファイル(~.bat)でFTP送信を行いたいのですが。 条件としましては送信先が日付のフォルダに送る事です。 通常(私が知っているのは)・・・・ abcdef.bat    ftp -s:c:\temp\test.ftp test.ftp    open 192.168.210.112    (user)    (password)    put c:\temp\aaaa.txt bbbb\aaaa.txt    bye ・・・・・です。 abcdef.batを実行するとFTP送信が行われます。 これだと「test.ftp」が固定なので送信先のフォルダが変更できません。 何か方法がわかれば誰か教えて下さい。参考程度でもかまいません。

  • FTPサーバからファイルをコピーしたい

    お世話になります。 唐突ですが、FTPサーバーからファイルをディレクトリごと移動させる動きをbatファイルまたはほかのプログラムで実現させたいのですが、方法が分かりません。 Move処理自体が難しそうなのでファイルをコピー後に削除できればと考えましたが、なかなかうまいことできません。 ちなみにftpサーバーは常にファイルが追加されるので全てのファイルをコピーする必要があります。 FTPサーバーにアクセス⇒全てのディレクトリごとコピー⇒コピーしたディレクトリごと削除。 この一連の流れを実現できるようなコマンドはありませんでしょうか。 何卒、宜しくお願い致します。

  • VBScriptでFTPサイトからダウンロードさせたい。

    こんにちは。 VBS(初心者)です。 このところ1週間くらい悩んでいるので教えて下さい。 VBSでFTPサイトから複数ファイルをダウンロードさせたいのですが、エラーが出てうまくいきません。 具体的には、 xxx.vbsをWクリックすれば、FTPサイトにアクセスし、ファイルをローカルにダウンロード完了。まで行いたいです。 現在、 1.ローカルフォルダTempにアクセス 2.TempからTemp1にコピー 3.Temp1からTemp2に移動 4.TempとTemp2のファイルサイズ表示、終了 という.vbsは出来ているんですが、1.をFTPサイトにしたいのです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=381743 なども見てみましたがイマイチ理解できませんでした。 call FTPDownload($server, $user, $pwd, $svr_fname, $cli_fname[, $bin_flag, $proxy, $port]) 上記でもうまくいかないのですが・・・ .vbsでIEを起動したりすることは出来ています。 どなたかごぞんじ又は、サンプルが載っているサイトがあれば教えて下さい。 よろしくおねがいします。

  • FTPコマンドでgetしたい

    FTPコマンドでファイルを転送したい。操作はクライアントで行っています。 サーバ⇒クライアントです。ディレクトリー構成は。(サーバー側)c:\2.txt を⇒(クライアント側)c:\2.txt に転送したいのですがエラーが出ます。次のように実行しています。 ftp>get c:\2.txt c:\2.txt としています。これを実行すると次のエラー 【550 c:\2.txt :The filename is incorrect】 と出ます。どうすればよいでしょうか? ファイルタイプもascii にしたりbin にしたり試しているがだめです。 お願いします。

  • VBSでFTPを記述できますか?

    OSはWIN2K PROですが、 FTPサーバーより、あるファイルをGETする バッチファイルを作成しました。 ftp 172.16.1.1 get test.txt c:\temp\get.txt バッチファイルで作成したのですが、 VBSでFTPサーバーよりファイルをGETする ということは可能でしょうか? 初心者ですが、よろしくお願いいたします。

  • [WSH] ファイルのコピーができない

    こんにちは。 次のようなスクリプトでFTPフォルダにファイルをコピーしようとしたのですが、カレントフォルダにファイルがコピーされてしまうようです。 どうすれば、FTPフォルダにファイルをコピーできるのでしょうか? var objShell = WScript.CreateObject("Shell.Application"); var objFolder = objShell.NameSpace("ftp://user:password@sitename/directory/"); objFolder.CopyHere("C:\\WINNT\\win.ini"); WScript.Sleep(6000); ※下記のページを参考にさせていただき作成しました。http://homepage3.nifty.com/aya_js/wsh/wsh25.htm

  • FTPコマンドの記述方法

    FTPサーバーからCSVファイルをダウンロードしようとftpcmd.txtファイルに下記を記述しました。コマンドプロンプトではファイルの取得に成功しています。 open server_name password get remote_file local_file close bye 問題は、この取得したファイルを差し替えるローカルPC側のリダイレクトの場所である[ログファイル名]の.batファイルの記述の仕方がわかりません。 ftp -s:ftpcmd.txt > [ログファイル名]←ログファイル名の記述方法 例えば、”C:¥”に置きたい場合はどのように記述すればよろしいのでしょうか? よろしくお願いします。 ちなみに下記のHPを参考にして作成しました。 http://www.psytec.co.jp/tips/0102/