
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- Visual Basic(VBA) エクセルVBAでメールの自動作成の モジュールを作ったのですが、txtファイルから読み込んだ本文が文 2 2022/07/20 15:01
- Visual Basic(VBA) chromedriverのver-upで動作不安定となった 3 2022/07/07 11:32
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
多数のサブディレクトリ内のフ...
-
VBAでワークシートを引数として...
-
Windowsのバッチファイルを利用...
-
リモートのファイル存在確認
-
バッチファイル 複数ファイル...
-
テキストファイルで提出とは?
-
renameコマンドについて
-
エクセルの各セルの内容をそれ...
-
VBSでフォルダ内のテキストファ...
-
ファイル名の一部をbatで変更し...
-
ファイルを処理中に次の処理に...
-
【C++】 ファイルの名前を変更...
-
外部exeに対しての引数受け渡し
-
COPYコマンドで結合すると余計...
-
ファイルの最後に文字列挿入
-
Excel VBAの文字列と数値の分類
-
【csh】ファイルの中の値を配列...
-
バッチ(bat)でリストファイルか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
拡張子を元に戻す
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
COPYコマンドで結合すると余計...
-
エクセルの各セルの内容をそれ...
-
バッチファイルで文字列削除に...
-
ファイルの最後に文字列挿入
-
UWSCでテキストファイルを開い...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
ファイル名の一部をbatで変更し...
-
forfilesで検索したファイルを...
-
外部exeに対しての引数受け渡し
-
Windowsのバッチファイルを利用...
-
VBSでフォルダ内のテキストファ...
-
VBAでエクセルをtxtに変換する...
-
ExcelVBA テキストファイルUNIC...
おすすめ情報