• 締切済み

自動ftpバッチで転送速度をろぐに出す方法

こんにちは windows2008で自動ftpバッチファイルを作成ししています。 自動ftpは出来るのですが、転送速度がログに出力されません。 具体的には手動でftpすると以下のように表示される「24000.00KB/秒」という部分を ログに出したいです。 200 PORT command successful. 150 Opening ASCII mode data connection for autoexec.bat. 226 Transfer complete. ftp: 24 バイトが送信されました 0.00秒 24000.00KB/秒。 そもそもログに表示させることはできないのでしょうか? お分かりの方、お教えください。 今作っているバッチファイルはこんな感じです。 ftpauto.txt ---------------- ftp -s:ftpcmd.txt>>ftp.log 2>&1 ftpcmd.txt ---------------- open XX.XX.XX.XX user-id Password bin cd / lcd C:\ put XXX disconnect bye ------------------------------------ 宜しくお願いします。

みんなの回答

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.3

No.2の追記です。 肝心の検索のパイプ処理が抜けていました。 ftp -i -s:ftpcmd.txt | findstr " ftp: " >temp.txt

ponta_0205
質問者

お礼

有難うごさいました。 うまく稼働させることができました。

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.2

No.1の追記です。 -i オプションでインタラクティブ モードをオフにして "ftp: " で検索して(スペース含めて5文字) temp.txt に出力してはどうですか。 ftp -i -s:ftpcmd.txt >temp.txt 取得した文字列(例:strline)から tokens= を使って 24000.00Kbytes/sec. を取り出します。 数値(speed)だけ使いたい場合は set コマンドにて set speed=%strline:Kbytes/sec.=% を使って 24000.00 を取得します。 --- 以上、応用してみてください。

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.1

単純にappendモードのリダイレクトではダメなのでしょうか。 ftp -s:ftpcmd.txt>>ftp.log あとはlogから"KB/秒"を判定して文字列を切り出せばいいと思いますが・・・

ponta_0205
質問者

お礼

ご回答ありがとうございます。 自動でftpバッチを動かすと「KB/S」が表示されないのです。 手動で実施しないと出力されないというのが困っているところです。 追加でお教えいただけると助かります。

関連するQ&A

  • ftpコマンドバッチファイルのリダイレクト結果

    以下のようなバッチファイルを作成しました ftp -s:ftpcmd.txt > ftplog.txt FIND /i "226 Transfer complete" ftplog.txt >NUL exit /b %ERRORLEVEL% ftpcmd.txt open hoge anonymous hoge prompt cd /xxxx/ put test.txt quit こうする事でftp送信が正常に終了したかどうかを exitの終了コードで判断しようとしていたのです バッチファイルを手動で動作させたところ成功です しかしこのバッチファイルを Webサーバのサーブレット(javaプログラム)から 動作させるとftplog.txtの出力結果がなぜか プログラムから実行した時のftplog.txt User (hoge:(none)): open hoge prompt cd /xxx/ put test.txt quit こんな結果になってしまうんです あれれ?ftpコマンドが出力するメッセージがリダイレクトされない んです 手動でこのバッチファイルを実行した時は 以下のようになります 226 Transfer complete. のメッセージがサーブレットからバッチファイルを実行しても ftplogファイルに出力されるように したいのですが 何かいい方法はないでしょうか? 手動実行した場合のftplog.txt ftp> Connected to hoge open hoge 220 Microsoft FTP Service User (hoge:(none)): 331 Anonymous access allowed, send identity (e-mail name) as password. 230 Anonymous user logged in. ftp> Interactive mode Off . ftp> prompt cd /xxx/ 250 CWD command successful. ftp> put test.txt 200 PORT command successful. 150 Opening ASCII mode data connection for test.txt. 226 Transfer complete. ftp: 59523 bytes sent in 0.00Seconds 59523000.00Kbytes/sec. ftp> quit 221

  • バッチ処理でftpから自動的にダウンロード

    バッチ初心者です。 バッチを使用してLAN内のftpサーバーからcsvを別のマシンのフォルダへ定期的(10分毎)にダウンロードするようにしたいのです。 テキストファイル(ファイル名ftpcmd.text)に以下のように記述しました。 open 「ftpサーバーのIPアドレス」 「ユーザー名」 「パス」 mget*.csv quit バッチファイル(auto_ftp.bat)に以下のように記述しました。 ftp -i-s:ftpcmd.txt ダウンロード先の指定と10分毎に実行させるにはどのようにすればいいですか? 宜しくお願いします。

  • windows10 FTP送信 バッチが動かない

    windows10からFTPサーバーへPUTしたいのですが、バッチファイルが動かないPCが存在します。 バッチファイル ftp -s:\\**********\b01.bat >\\**********\ftp.log b01.bat  open **********  **********  **********  PUT \\**********.TXT  QUIT 以下がログです。 ftp> open ********** ********** に接続しました。 220 (vsFTPd 2.2.2) 200 Always in UTF8 mode. ユーザー (**********:(none)): 331 Please specify the password. 230 Login successful. ftp> PUT \\**********.TXT 200 PORT command successful. Consider using PASV. 425 Failed to establish connection. ftp> QUIT 221 Goodbye. 色々調べた結果、パッシブモードではないからダメ・・・ しかしながら、別のwindows10では、問題なくPUT出来ています。 試しに、動作しないPCでコマンドラインで実行した結果は、 200 PORT command successful. Consider using PASV. ここまで上記と同様 150 Ok to send data. ftp: 300バイトが送信されました 0.29秒 1.05KB/秒 上記の通り問題なく送信できます。 windowsのFTPはパッシブモードはサポートしないならすべて出来ないなら理解できますが コマンドプロンプトでは実行できることが疑問、また、実行できる端末と出来ない端末があることも疑問です。 WinSCPに変更することも考えたのですが、windowsのバッチファイルを自動生成し実行後LOGに内容により他の処理を実行するところも作りこんでいて問題なく使用していた為、今更変更できない状況です。(パッシブモードの事さえ知らず動いていました) 何が何だかわからない状態です、お知恵をいただけないでしょうか・・・

  • Windows マシンでFTPバッチが動かない

    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 ファイルの内容をコピペして、きちんと動くので、 何が原因がわかりかねています。 どなたか知恵を貸してください。

  • FTPのコマンド「mput」について

    FTPで、ファイルを一括して、サーバーに送りたいのですが、その際に 「mput *.* *.*」などとすると、それぞれのファイルが2回putされます。これは、仕様でしょうか。 例えば、1つのファイル「A.txt」を mput した場合と、put した場合では、下記のようになります。 <mput> ************************ ftp> mput A.txt A.txt 200 PORT command successful. 150 Opening BINARY mode data connection for A.txt. 226 Transfer complete. ftp: 159232 bytes sent in 0.01Seconds 10615.47Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for A.txt. 226 Transfer complete. ftp: 159232 bytes sent in 0.00Seconds 159232000.00Kbytes/sec. ************************ <put> ************************ ftp> put A.txt A.txt 200 PORT command successful. 150 Opening BINARY mode data connection for A.txt. 226 Transfer complete. ftp: 159232 bytes sent in 0.01Seconds 10615.47Kbytes/sec. ************************

  • WindowsのバッチファイルでFTP転送

    PC-A(Windows)内の特定のデータを、PC-B(Linux)内の特定のフォルダにコピーするのに FTPのバッチファイルを使いたいと思います。 元データの場所 PC-A\%systemroot%\system32\dhcp\test.log  ↓                        このデータを転送したい。 転送先(PC-B) /1G/1T/(ここにコピーしたい) 下のような構成を考えたのですが、うまくいかないので誤っている点をご指定いただけますでしょうか? バッチファイル内 ftp -s:copy_to_server.txt テキストファイル(copy_to_server.txt )内 open サーバー名 ユーザー名 パスワード put %systemroot%\system32\dhcp\test.log >> PC-B\1G\1T bye

  • ftpのgetが正常できる方法について

    約100Mバイトのログファイルの差分をとるため、下記のバッチファイルとteratermマクロを実行させました。 やり方は、差分をとりたい2つのログをfptにてサーバーへ転送し、サーバーでsdiffを実行し、差分結果をftpにてとってくるものです。 バッチファイル  echo open xx.xx.xx.xx > "%~dp0put.txt"  echo abcdef >> "%~dp0put.txt"  echo pwabe >> "%~dp0put.txt"  echo put log1 log1 >> "%~dp0put.txt"  echo put log2 10g2 >> "%~dp0put.txt"  echo quit >> "%~dp0put.txt"  ftp -s:"%~dp0put.txt"  del "%~dp0put.txt"  "c:\ProgramFiles\teraterm\ttpmacro.exe" "%~dp0sdiff.ttl"  cho open xx.xx.xx.xx > "%~dp0get.txt"  echo abcdef >> "%~dp0get.txt"  echo pwabc >> "%~dp0get.txt"  echo get kekka kekka >> "%~dp0get.txt"  echo del log1 >> "%~dp0get.txt"  echo del log2 >> "%~dp0get.txt"  echo quit >> "%~dp0get.txt"  ftp -s:"%~dp0get.txt"  del "%~dp0get.txt"  exit/b teraterm macro (sdiff.ttl)  connect'xx.xx.xx.xx.:xx/ssh/2/auth=/user=abcdef/passwd=pwabc'  wait'$'  sendln 'sdiff logl log2 > kekka'  sendln 'mv kekka kekka1'  sendln 'perl -pe "s/\n\r\n/"kekka1 > kekka'   wait'$'  sendln 'rm kekka'  sendln 'rm kekka1'  Sendln 'logout'  end ここから相談です。 ftpでgetしてきた差分は、ログの頭から3分の1程度しかなく、全ての差分をとることができませんでした。 調査したところ、サーバー側はログ全ての差分を取れていることを確認しました。 なぜ、ftpで作業結果をgetすると、3分の1しかないのか原因がわからないまま、試行錯誤で対処方法を見つけたのが次の方法です。 方法1(teraterm macroの変更1)  次のようにwait'$'を追加する。  sendln 'sdiff logl log2 > kekka'  wait'$'  sendln 'mv kekka kekka1'  wait'$'  sendln 'perl -pe "s/\n\r\n/"kekka1 > kekka' 方法2(teraterm macroの変更2)  次のように20秒のpauseをとる。  sendln 'sdiff logl log2 > kekka'  pause 20  sendln 'mv kekka kekka1' 方法1も方法2もタイミングを取るような方法ですが、このやり方で、なぜftpでgetした差分結果が正常(ログすべての差分が取れている)になるのかがわかりません。本当にこの対処でよいか判断できません。 どなたか上記方法でよい理由がお解りでしたら、教えてください。

  • windows2008でftpをバッチ実行する。

    windows2008サーバーでバッチファイルを作成しftpで複数ファイルを自動転送しようと思います。 今まで(OSはXP)はうまく実行していたのですが、windows2008サーバーではうまくいきません。 ちなみにバッチファイルは @echo off echo ●FTP処理 C:\Windows\System32\ftp.exe -s:d:\ftp\tohost.txt echo on @echo off echo ●終了 tohost.txtの内容は open 192.168.1.1 Uid Pwd bin put d:\ftpdata\a1.txt /afld/a2.txt bye です。 何かwindows2008による特別な方法があるのでしょうか? よろしくお願いいたします。

  • バッチファイルにてFTPで指定したファイルを取得する

    OSはWindoswXPProです。 以下のようなBATファイルとバッチファイルを作成しました。 ---FTP.bat--- echo off ftp -s:get.ftp ---get.ftp--- open 10.0.X.X username password cd /log get log.yymmdd(実際には日付) c:\access_all_log.txt quit logというディレクトリには日次でログファイルが作成され ファイル名としてlog.yymmddと名づけられています。 やりたいことは2つあります。 1つめはftpするファイル名の日付部分をコマンドなどから 範囲指定して取得するファイルを指定できないか。 (たとえば070301~070315のファイルを一括で取得したい) 2つ目はftpでのファイル取得終了後に続いて バッチスクリプトを流したいのですが、その方法。 お分かりになる方いらっしゃいましたらよろしくお願いいたします。

  • バッチファイルで定期的にファイル削除を行う方法

    windows2003サーバーでテキストファイルにプログラムの処理結果を記述させています。 そのログファイルを1日に1回削除するバッチファイルを作成しようと考えています。 以下のような動きをするようにするにはどのように記述したら良いのでしょうか。(ログファイルの名前をlog.txtとします。) 1,log.txtを削除 2,0キロバイトのlog.txtを作成 「log.txtを削除」はdelコマンドでできますが、「0キロバイトのlog.txtを作成」でファイル新規作成のコマンドがわかりません。 もし分かる方がいましたら教えてください。