出産前後の痔にはご注意!

こんにちは。
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を起動したりすることは出来ています。
どなたかごぞんじ又は、サンプルが載っているサイトがあれば教えて下さい。
よろしくおねがいします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

basp21(フリーなCOM)を使えば簡単に出来るでしょう。


http://www.hi-ho.ne.jp/babaq/basp21f.html
    • good
    • 1
この回答へのお礼

ありがとうございました。
使ってみたらできました。
もうちょっと作りこんでみます。

お礼日時:2004/10/05 12:46

WindowsXPなら


コマンドラインツールのftp.exeがあるので
それを利用するか、
todo36さんの仰るコンポーネントが簡単ですね。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=381743
>なども見てみましたが
これは
1.Internet Explorer経由で
Navigateメソッドを使用して
「ファイルのダウンロード」ダイアログを出して
2.Sendkeysで「保存」をクリックさせて
3.Sendkeysで保存先パスを入力させる
といったお洒落じゃない方法です。
    • good
    • 0
この回答へのお礼

ありがとうございました。
#1さんのツールでなんとかできそうです。
がんばります。

お礼日時:2004/10/05 12:47

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBSで *.txt をサーバーにFTPするには?

お世話になります。

早速ですが、
「ftpserver の plt00h フォルダー に *.txt をアップロードする」VBSのプログラムを作るため、
調べたところ、「ファイルをFTPするプログラムをNameSpaceで記述できる」とあったので
見てみると、JavaScript で記述してる例でした。

この例をもとに、VBSにする挑戦をしていますが、なかなかうまくいきません。

== JS sample ============================
var oShell = WScript.CreateObject("Shell.Application");
var oFolder = oShell.NameSpace("ftp://ftpusr:ftpusr@ftpserver/plt00h/")

var desktop = oShell.NameSpace(0);
var objFolderItems = desktop.Items();
for(var i = 0; i < objFolderItems.Count; i++) {
var ofitem = objFolderItems.Item(i);
if(ofitem.Name == "a.txt") {
oFolder.CopyHere(ofitem);
WScript.Sleep(6000);
break;
}
}
====================================================

上のコードをもとに、
「ftpserver の plt00h フォルダー に *.txt を,plt00vに *.org をアップロードする」
VBSのプログラム書きたいのですが、なかなかうまくいきません。

== VBS =============================================
Option explicit

Dim oShell, FolderH, FolderV, desktop, objFolderItem

Set oShell = WScript.CreateObject("Shell.Application")

Set FolderH = oShell.NameSpace("ftp://ftpusr:ftpusr@ftpserver/plt00h/")
Set FolderV = oShell.NameSpace("ftp://ftpusr:ftpusr@ftpserver/plt00v/")

Set desktop = oShell.NameSpace(0)
Set objFolderItems = desktop.Items()

FolderH.CopyHere("*.txt") ← FTPサーバーのplt00h ヘ*.txtをアップロード?
FolderV.CopyHere("*.org") ← FTPサーバーのplt00v ヘ*.orgをアップロード?

WScript.Sleep(6000)

====================================================

FTPホスト     :ftpserver,
FTPユーザ     :ftpusr
FTP パスワード  :ftpusr
FTP先DIR     :plt00h, plt00v
送信対象ファイル: :*.txt, *.org

ちなみに、 ftp -s: ftp.txt の方式は、VBSで作成して、実行できました。

ご指導よろしくお願いいします。

お世話になります。

早速ですが、
「ftpserver の plt00h フォルダー に *.txt をアップロードする」VBSのプログラムを作るため、
調べたところ、「ファイルをFTPするプログラムをNameSpaceで記述できる」とあったので
見てみると、JavaScript で記述してる例でした。

この例をもとに、VBSにする挑戦をしていますが、なかなかうまくいきません。

== JS sample ============================
var oShell = WScript.CreateObject("Shell.Application");
var oFolder = oShell.NameSpace("ftp://ftpusr:ft...続きを読む

Aベストアンサー

No.1です。

No.1のアドバイスをもとに、Name()メソッドで1個ずつ
ファイル名を確認しながらCopyHere()する処理をVBScriptで
書こうとしてつまづいているのですよね?

No.2補足の質問を回答しておきます。

(質問1)
NameSpace()の正式な仕様は、
http://msdn.microsoft.com/en-us/library/bb774085(VS.85).aspx
に書かれています。ここからリンクされている
ShellSpecialFolderConstantsの説明
http://msdn.microsoft.com/en-us/library/bb774096(VS.85).aspx
に、指定可能な数値とその意味が書かれています。
英語がつらいなら、とりあえず
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/object/shell.htm
がで雰囲気をつかむとよいと思います。

(質問3)
VBScriptのIf文の比較条件式は「==」ではありません。
「=」です。


ついでに指摘を。

For i = 1 to objFolderItems.Count - 1 step 1
→「i = 0」からスタートすべきでしょう。

If ofitem.Name == "FFFTP" then oFolder.CopyHere(ofitem)
→"FFFTP"と比較しても、おそらく一致するものはないでしょう。
デスクトップにFFFTPへのショートカットファイルがあって、
それを検索しているのだったら"FFFTP.lnk"とすべきでしょう。
また、元の質問にあるような"*.txt"を検索したいのだったら
If LCase(Right(ofitem.Name,4)) = ".txt" then ~
のようにすべきでしょう。

No.1です。

No.1のアドバイスをもとに、Name()メソッドで1個ずつ
ファイル名を確認しながらCopyHere()する処理をVBScriptで
書こうとしてつまづいているのですよね?

No.2補足の質問を回答しておきます。

(質問1)
NameSpace()の正式な仕様は、
http://msdn.microsoft.com/en-us/library/bb774085(VS.85).aspx
に書かれています。ここからリンクされている
ShellSpecialFolderConstantsの説明
http://msdn.microsoft.com/en-us/library/bb774096(VS.85).aspx
に、指定可能な数値とその意味が書かれています。
英...続きを読む

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

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

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

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

Local保存側
D:\temp

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

Aベストアンサー

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

FTPコマンドには詳しくないのですがWSHはわかります。手順はこんな感じでしょうか。

(1)FTPコマンドを記述したファイルのテンプレートを作成しておく。
(2)WSHでテンプレートから本日のFTPのためのファイルを作成する。
(3)WSHでFTP -s:ファイル名 ホスト名 を実行する。

そこで(2)の方法ですけれども、例えばFTPコマンドを記述したファイルが C:\FTPtemplate.txt にあり、その中に本日の日付にしたい文字 @day が埋め込んであるものとします。@day を本日の日付2桁に書き換えて C:\FTPtoday.txt を作成す...続きを読む

QVBSでFTPを記述できますか?

OSはWIN2K PROですが、
FTPサーバーより、あるファイルをGETする
バッチファイルを作成しました。

ftp 172.16.1.1
get test.txt c:\temp\get.txt

バッチファイルで作成したのですが、
VBSでFTPサーバーよりファイルをGETする
ということは可能でしょうか?

初心者ですが、よろしくお願いいたします。

Aベストアンサー

どのレベルで取得したいかわかりませんが、
ベタFTP呼び出しによる転送なら、こちらが参考になるのではないかと思います。

http://hp.vector.co.jp/authors/VA006065/soft/ftpgen.htm

VBSでFTP接続から転送までコーディングしたかったら・・。
http://nt.sakura.ne.jp/~krsna/nazo/visitor/vi998001.html
http://www.b21soft.co.jp/basp21/basp21pftp.html

QVBAでHTTP(又はFTP)を使う方法について

「ファイル名.vba」というファイルをダブルクリックするだけで、特定のサイト(http/ftp上)のあるファイルをデスクトップ上に持ってくるシェルスクリプトを考えています。

単純にスクリプトだけで実現したいので、何かソフトをインストールし、スクリプトの中でそれを実行する…というのは考えていません。

なんか参考になるサンプル、もしくはホームページご存知でしたら宜しくお願いします。(VBAは初心者です)

ちなみに、OSは、win2000です。

Aベストアンサー

IE6sp1でない場合
《ファイルのダウンロード》ダイアログが出ないで
いきなり
《名前を付けて保存》ダイアログが出るかも。

それと、
WshShell.SendKeys "%i"
WshShell.SendKeys "{DOWN}{UP 10}{DOWN}{ENTER}"
WshShell.SendKeys "%s"
このままだと、キー入力スピードに
Windowsが追いつけない場合は
WScript.Sleep(100) (0.1秒停止という意味)
を足して

WshShell.SendKeys "%i"
WScript.Sleep(100)
WshShell.SendKeys "{DOWN}"
WScript.Sleep(500)
WshShell.SendKeys "{UP 10}{DOWN}{ENTER}"
WScript.Sleep(100)
WshShell.SendKeys "%s"

とこんな感じにするといいかも。

Windows2000に付属している
VBScriptエンジンは

Windows Script Hostといういわれている言語の1つで

他にJScriptというJavaScriptとそっくりなエンジンも
Windows2000に搭載されています。(拡張子はjs)

Windows script Host は現在バージョンは5.6です。
↓こちらからダウンロードできます。
 マニュアルもここから入手可能です。

参考URL:http://www.microsoft.com/japan/msdn/scripting/default.asp

IE6sp1でない場合
《ファイルのダウンロード》ダイアログが出ないで
いきなり
《名前を付けて保存》ダイアログが出るかも。

それと、
WshShell.SendKeys "%i"
WshShell.SendKeys "{DOWN}{UP 10}{DOWN}{ENTER}"
WshShell.SendKeys "%s"
このままだと、キー入力スピードに
Windowsが追いつけない場合は
WScript.Sleep(100) (0.1秒停止という意味)
を足して

WshShell.SendKeys "%i"
WScript.Sleep(100)
WshShell.SendKeys "{DOWN}"
WScript.Sleep(500)
WshShell.SendKeys "{UP 10}{DOWN}...続きを読む

QFTPの送信結果を検知したい

WindowsでFTPをバッチファイルから呼び出すことを考えています。FTPで送信エラーが発生した場合に、FTPのエラーとして検知したいのですが、その方法をご存じのかたおりましたら教えて下さい。(Windows-NTで標準で提供されるFTPを使用しています)直接私が確認したわけではありませんが、FTP送信でエラーが発生してもFTPの終了コードが0になってしまうらしく、FTPのエラーを検知できないそうです。WindowsであればWindows-NT以外の環境でもかまいませんので、ご存じのかたおりましたら教えて下さい。

Aベストアンサー

標準のツールでやるなら、ftpコマンドの出力をファイルにリダイレクトして、find か findstr コマンドで適当な文字列の有無で判断するしかないですね。

>FTPで転送後に転送先のホスト内のある処理が自動的に動き
とのことですが、転送先ホストで単純にデータファイルの有無で先に進むと、転送途中のファイルを読んだり、転送エラーで途中で終わったファイルを読んだりする可能性があるので、普通は、転送元でデータファイルの正常転送を確認後に目印ファイル(中身は空でよい)を送り、転送先では目印ファイルがあることでデータファイルが正しく受信できたことを判断して目印ファイルを消して先に進む(データファイルを処理する)のが良く使われる手法です。

QWshShellから起動したbat(ftp)の応答メッセージを取得するには

下のbatファイルをDosプロンプトから起動した場合は
resulf.logに230 User zerokara logged in.と出力されますが、
これをVBからWshShellオブジェクトのExecメソッドで起動しますと
resulf.logにftpの応答メッセージ(230 User zerokara logged in.など)が
出力されませんのでfindできずエラーを返してしまいます。
よろしければ、この現象の意味とWshから起動した場合にresulf.logに
ftpの応答メッセージを出力する方法を教えてください。
宜しくお願いします。


test1.bat
ftp -s:C:\VB\ftp_test.scr >resulf.log
type resulf.log | find /i "230"
IF NOT %ERRORLEVEL% == 0 GOTO ERROR
copy 命令

Aベストアンサー

>Set we = ws.Exec("cmd.exe /c D:\VB\test.bat > test.log")

見落としてました(^^;
Exec使ってたんですね。
でしたら標準出力への出力結果はファイルには出ません。
Execメソッドの戻り値であるWshScriptExecのStdOutプロパティからアクセスすることになります。

ファイルに出力されるのを希望されるんでしたら、Execではなく、Runメソッドを使用してください。こちらでも終了待てますんで。

QFTPコマンドでディレクトリごとファイル移動できるコマンドはありますか?

タイトルどおりなのですが、FTPでファイルを転送する際に、サブフォルダを含むディレクトリごとファイル転送するコマンドはありますでしょうか。
ディレクトリの中にあるすべてのファイルを移動したいのですが、サブフォルダがたくさんあるので、わざわざディレクトリの場所へ移動してmputを繰り返すのはめんどうで仕方ありません。
よろしくお願いします。

Aベストアンサー

ご使用になるOS環境が書いてないのですが、Linux,BSD等ならncftpで、get -R dir。
Windowsならffftpを使えば良いと思います。

Qbasp21をWindowsServer2008R2で利用するには。

basp21をWindowsServer2008R2で利用するには。

お世話になります。
32Bit WindowsServer2003環境で利用していたメール送信ンポーネントbasp21を64bit環境で利用できるか調査しています。
32bit環境で利用していたメール送信用のvbsファイルをなんとかそのまま使いたいです。

検索していたら、
64bit版のIIS7.0でBasp21を使う方法 を発見し試しましたが動作しません。
http://d.hatena.ne.jp/windowsserver/20080926/1222407780

行った操作は、以下の通りです。
・basp21を使いたいサイトに対応するアプリケーションプールの「詳細設定」を開きます
・「32ビットアプリケーションの有効化」を[True]にします。

次のアラートが表示されます。
エラー:ActiveXコンポーネントはオブジェクトを作成できません。'basp21'
コード:800A01AD
ソース:Microsoft VBScript 実行時エラー

basp21をWindowsServer2008R2で利用するためにどのような設定が足りないのでしょうか。
どなたかご教授いただけませんでしょうか。
何卒宜しくお願い致します。

basp21をWindowsServer2008R2で利用するには。

お世話になります。
32Bit WindowsServer2003環境で利用していたメール送信ンポーネントbasp21を64bit環境で利用できるか調査しています。
32bit環境で利用していたメール送信用のvbsファイルをなんとかそのまま使いたいです。

検索していたら、
64bit版のIIS7.0でBasp21を使う方法 を発見し試しましたが動作しません。
http://d.hatena.ne.jp/windowsserver/20080926/1222407780

行った操作は、以下の通りです。
・basp21を使いたいサイトに対応するアプリケー...続きを読む

Aベストアンサー

「32ビットアプリケーションの有効化」を[True]にします。

これはあくまで、ASPを利用していた際の設定方法になります。
VBスクリプトであれば、
c:\windows\SysWOW64\wscript.exe VBスクリプトファイル
(場合に応じてwscript.exe を cscript.exeに読み替えてください)

これでBASPを使ったVBスクリプトも動作するはずです。

QFTPエラー425

FTPで425エラーが出て困っています。
今まで繋がっていたのが突然繋がらなくなりました。
調べてみると20番ポートが遮断されている可能性が高く、
どこで遮断されているか調べる良い方法があれば教えて下さい。

・クライアント
OS:Windows 8.1、ファイアウォール: Norton Inernet Security
・サーバー(AWS)
OS:Red Hat Enterprise Linux Server release 7.1 (Maipo)
ファイアウォール:AWSのネットワークルール設定

接続は出来ていて、lsを打つとエラーになります。
サーバーにTertermでログインしてlocalhostにftpするとlsできるので、
ftpd自体に問題はなさそうです。
また、サーバー側の設定は直しておらず、突如動かなくなったので、
クライアントのファイアウォール設定が変わったのを疑っていますが、
ファイアウォールを一時停止しても解消しませんでした。
どこが悪いか原因を切り分けられるずに困っています。
原因箇所を調べる良い方法があればご教示ください。

FTPで425エラーが出て困っています。
今まで繋がっていたのが突然繋がらなくなりました。
調べてみると20番ポートが遮断されている可能性が高く、
どこで遮断されているか調べる良い方法があれば教えて下さい。

・クライアント
OS:Windows 8.1、ファイアウォール: Norton Inernet Security
・サーバー(AWS)
OS:Red Hat Enterprise Linux Server release 7.1 (Maipo)
ファイアウォール:AWSのネットワークルール設定

接続は出来ていて、lsを打つとエラーになります。
サーバーにTerterm...続きを読む

Aベストアンサー

>FFFTPで繋いでいて拡張オプションのPASVモードにチェックをつけていないのでpassiveモードではないはずですが、

クライアントソフトはActive FTPで接続しようとしているのは間違いないですね。

>WireSharkで見たところ、後ろにPASVと書かれていました。
>Wireshark結果
>3967 345.551600000 52.27.XX.XXX 192.168.0.4 FTP 105 Response: 200 PORT command> successful. Consider using PASV. ← パッシブモードになっている?

良く読んで下さい。単に「Passiveモードでの使用を検討して下さい」というメッセージです。

クライアントソフトはActive FTPで接続しようとしているものの、サーバ側がActive FTPを恐らくサポートしていないので、「Passiveモードに移行してよ」とメッセージを出した。にも関わらずクライアントはPASVコマンドを実行することもなく、LISTコマンドを実行したので「425 Failed to establish connection」、つまり「だぁかぁらぁ、データセション張ってないんだから」と返したわけです。

「Passiveモードでの使用を検討して下さい」というメッセージは柔らかな表現ですが「いいか、俺はPassiveモードしか受け付けないからな。次はPASVコマンドを打てよな。それ以外は知らんからな」と等価です。まぁ、QUITやBINARYやASCII等は受け付けてくれるとは思いますが。

>またサーバーが20番ポートにセッションを張ろうとしている形跡がありませんでした。
>これはPASVモードになっているのでしょうか?

サーバは少なくともPassiveモードしかサポートしていないようです。なので、サーバからクライアントの20/TCPにはコネクションを張らずに、21/TCPでクライアントからのPASVコマンド待ちです。PASVコマンドがクライアントから来れば、21/TCPでEntering Passive Mode (X,X,X,X,A,B)を返しますので、クライアントはサーバの(A*256+B)/TCPポートに対してSYNを送信、所謂3ウェイハンドシェイクでデータセションが繋がるという流れになります。

>FFFTPで繋いでいて拡張オプションのPASVモードにチェックをつけていないのでpassiveモードではないはずですが、

クライアントソフトはActive FTPで接続しようとしているのは間違いないですね。

>WireSharkで見たところ、後ろにPASVと書かれていました。
>Wireshark結果
>3967 345.551600000 52.27.XX.XXX 192.168.0.4 FTP 105 Response: 200 PORT command> successful. Consider using PASV. ← パッシブモードになっている?

良く読んで下さい。単に「Passiveモードでの使用を検討して下さい」というメッ...続きを読む

Qwindows script encoder ダウンロードできない

script encoderのダウンロードページが
存在しないとのメッセージで
ダウンロードできません。

もうできなくなってしまったのでしょうか
またwindows script encoder に代わる
無料ソフトの代用品は何かないでしょうか

Aベストアンサー

調べてみた・・・。
https://social.technet.microsoft.com/Forums/scriptcenter/en-US/7711b75b-4793-43b0-a5e1-6efa8b7bd00e/where-can-i-download-microsoft-script-encoder?forum=ITCG
の最後のレス(Moscさん)に英語版ですがリンク先が紹介されています。

https://social.technet.microsoft.com/Forums/scriptcenter/en-US/1d132da1-2014-4f34-87f5-d787e764995f/save-encrypted-password-in-vbscript?forum=ITCG#ed557f4e-471e-456d-af81-43c77ef1c318
の、James Whitlowさんのレスです。
(ダウンロードの直リンクを避けるためにこのような回答に)

で、1番目のリンクの、jrv さんによれば
『 script encoder into scrrun.dll 』ということなので、さらにGoogleと
https://gallery.technet.microsoft.com/Encode-and-Decode-a-VB-a480d74c#content
スクリプトファイルを作ってドラッグ・ドロップすればできますよ。
{script encoder(sce10en や sce10jp は必要ない)}
ということです。

調べてみた・・・。
https://social.technet.microsoft.com/Forums/scriptcenter/en-US/7711b75b-4793-43b0-a5e1-6efa8b7bd00e/where-can-i-download-microsoft-script-encoder?forum=ITCG
の最後のレス(Moscさん)に英語版ですがリンク先が紹介されています。

https://social.technet.microsoft.com/Forums/scriptcenter/en-US/1d132da1-2014-4f34-87f5-d787e764995f/save-encrypted-password-in-vbscript?forum=ITCG#ed557f4e-471e-456d-af81-43c77ef1c318
の、James Whitlowさんのレスです。
(ダウンロード...続きを読む


人気Q&Aランキング