![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
Windowsサーバから、UNIXサーバにFTPでファイル取得しようとすると、エラーがでてすすみません。
コマンドプロンプトで 対話的に動かす分には問題なく動作するのですが、バッチで動かすと
エラーがでてしまうのです。
動かそうとしているバッチファイルとその読み込みスクリプトは以下です。
(変数部分はぼかしています)
==== myftp.bat BGN ====
set dirname=%DATE:/=%
mkdir D:\master\%dirname%
ftp -s:ftpcmd.txt
==== myftp.bat END ====
==== ftpcmd.txt BGN ====
open hoge
user_naem
pass_word
bin
lcd D:\master
get file.txt
quit
==== ftpcmd.txt END ====
これらを動かすと、
スクリプト ファイル ftpcmd.txt を開くときにエラーが発生しました。
というエラーがでて前に進みません。
対話ベースでは、ftpcmt.txt ファイルの内容をコピペして、きちんと動くので、
何が原因がわかりかねています。
どなたか知恵を貸してください。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No.1です。
最初、ご質問の内容をこちらの環境でも検証しようと思い、ご質問内のファイルの内容を、ほぼそのままこちらの環境で実行してみたのですが、「200 port command successful」と表示され、うまく行きませんでした。これは恐らく、WidnwosのFTPコマンドがPASSIVEに対応していない為だと思います。
ですので、PASSIVEモードに対応したソフトでのやり方を書いていたのですが、ただ、よくご質問を見直してみたら、「スクリプト ファイル ftpcmd.txt を開くときにエラーが発生しました。というエラーがでて前に進みません。」とあったので、PASSIVEモードが原因ではないと思い、回答を書き直し、No.1の回等をさせて頂きました。
ですが、もしかしたら、いつか何かのお役に立つかも知れませんので、その時に書いた文章も、せっかくなので回答させて下さい。
もし、質問者さんの状況が許されるなら、「WinSCP」等のソフトを使った方が簡単です。コマンドラインに対応しています。
■ WinSCP
http://winscp.net/
以下の線内の内容は、WinSCPのスクリプトの例です。
「USERNAME」と、「PASSWORD」と、「example.com」と、「/file.txt」と、「G:\master\」を環境に合わせて書き換えて実行して下さい。
-----------------------
# バッチモードをオン
option batch on
# ファイル上書きの確認無効
option confirm off
# サーバーに接続
open ftp://USERNAME:PASSWORD@example.com -passive=on
# 接続先ディレクトリを変更
cd /
# バイナリモードに変更
option transfer binary
# ファイル操作(GET/PUT等)
GET "/file.txt" "G:\master\"
# 切断
close
exit
-----------------------
バッチファイルからスクリプトを実行する時は、以下の線内のようにします。ファイル名は何でも構いません。
-----------------------
WinSCP /script="スクリプトファイル.txt"
-----------------------
実行には、「WinSCP.exe」だけあれば動作しますが、「WinSCP.com」もあるとコマンドプロンプト上にスクリプト実行中の結果を表示することが出来ます。
また、「WinSCP.exe」をGUIで起動し、サーバーの設定を行うと「WinSCP.ini」に保存され、スクリプト内にパスワードを平文で記述しなくても自動認証してくれるようになります。その場合、「WinSCP.ini」は「WinSCP.exe」と同じディレクトリに置く必要があります。
その場合、スクリプト内の「open ftp://USERNAME:PASSWORD@example.com -passive=on」の「:PASSWORD」部分は削除します。
■ 参考リンク
・コマンドリファレンス - WinSCP Wiki - SourceForge.JP
http://sourceforge.jp/projects/winscp/wiki/scrip …
No.2
- 回答日時:
こんなかんじでtest.vbsをつくって実行してみては?
Dim oShell,remoteFolder,localFolder
Set oShell = WScript.CreateObject("Shell.Application")
Set remoteFolder = oShell.NameSpace("ftp://user_naem:pass_word@hoge/")
Set localFolder= oShell.NameSpace("D:\master")
filename="file.txt"
number=getitemnumber(remoteFolder,filename)
if number>=0 then
localFolder.CopyHere remoteFolder.Items.Item(number)
msgbox "OK"
else
msgbox "NO"
end if
function getitemnumber(myfolder,filename)
number=-1
for i=0 to myfolder.Items().Count -1
if myfolder.Items().Item(i).Name=filename then
number=i
exit for
end if
next
getitemnumber=number
end function
No.1
- 回答日時:
「ftpcmd.txt」が、仮に「C:\aaa\ftpcmd.txt」にあるとしたら、
cd /d "C:\aaa"
という一文を、バッチファイルのFTPコマンド前に記述するか、あるいは、
ftp -s:"C:\aaa\ftpcmd.txt"
として、FTPコマンドを実行されてはいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
txtとはWordでなんですか?
-
.txtではなく.logの方が良いの...
-
多数のサブディレクトリ内のフ...
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
バッチファイル 複数ファイル...
-
Windowsのバッチファイルを利用...
-
fortran77で複数のファイルの読...
-
renameコマンドについて
-
フォルダ名をファイル名の頭に...
-
エクセルの各セルの内容をそれ...
-
バッチファイルで文字列削除に...
-
ファイルの最後に文字列挿入
-
accessでSQL文を使ってcsvファ...
-
C++ ドラッグ&ドロップによる...
-
ftpコマンドで複数のファイルを...
-
【csh】ファイルの中の値を配列...
-
powershellでコンソール表示を...
-
実行時にコモンダイアログのフ...
-
VB テキストファイルから1文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
拡張子を元に戻す
-
テキストファイルで提出とは?
-
ファイルの最後に文字列挿入
-
バッチファイル 複数ファイル...
-
バッチファイルで文字列削除に...
-
renameコマンドについて
-
forfilesで検索したファイルを...
-
accessでSQL文を使ってcsvファ...
-
バッチファイルからVBAに引数を...
-
psqlでエラーログをとりたい
-
UWSCでテキストファイルを開い...
-
cshでファイルサイズ取得
-
MS-DOSのバッチファイルの中で...
-
コマンドプロンプトで指定した...
-
テキストファイルのタブをカン...
おすすめ情報