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も見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
あなたの人生で一番ピンチに陥った瞬間は?
これまでの人生で今振り返ると「あの時、1番ピンチだったなぁ...」という瞬間はありますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
コマンドプロンプトでFTPでエラー
Windows Vista・XP
-
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
コマンドでのFTP転送が進まない。
その他(コンピューター・テクノロジー)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.txtではなく.logの方が良いの...
-
多数のサブディレクトリ内のフ...
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
ファイルの最後に文字列挿入
-
ファイル内容の修正、行削除に...
-
COPYコマンドで結合すると余計...
-
Windows マシンでFTPバッチが動...
-
UWSCでファイルを開く方法
-
renameコマンドについて
-
accessでSQL文を使ってcsvファ...
-
Windowsのバッチファイルを利用...
-
ExcelVBA テキストファイルUNIC...
-
テキスト(txt)→ワード(docx)へ...
-
MS-DOSのバッチファイルの中で...
-
ファイル名の一部をbatで変更し...
-
VBSでフォルダ内のテキストファ...
-
PowerShellでのテキスト編集に...
-
拡張子を元に戻す
-
バッチにてフォルダ内ファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
多数のサブディレクトリ内のフ...
-
VBAでワークシートを引数として...
-
ファイルの最後に文字列挿入
-
COPYコマンドで結合すると余計...
-
拡張子を元に戻す
-
バッチファイル 複数ファイル...
-
forfilesで検索したファイルを...
-
エクセルの各セルの内容をそれ...
-
txtとはWordでなんですか?
-
バッチファイルで文字列削除に...
-
psqlでエラーログをとりたい
-
renameコマンドについて
-
ファイル内容の修正、行削除に...
-
3つ以上のテキストファイルをコ...
-
UWSCでテキストファイルを開い...
-
バッチファイルからVBAに引数を...
-
コマンドプロンプトで指定した...
-
MS-DOSのバッチファイルの中で...
おすすめ情報