ファイル転送のための最新更新履歴の送付方法

このQ&Aのポイント
  • Windows上で生成したファイルを定期的にLINUXサーバーに転送する際、最新の更新履歴のファイルだけを送付する方法について教えてください。
  • 現在は、タスクスケジューラーに登録したバッチファイルで、全てのデータを送付してしまっています。
  • 1分ごとに新しいファイルが生成されるので、最新の更新履歴のファイルだけを送付する方法を教えてください。
回答を見る
  • ベストアンサー

最新の更新履歴のファイルだけを送付

Windows上で生成したファイルをLINUXサーバーにバッチ処理で定期的に転送しようと考えています。 タスクスケジューラーにtest.batを登録し、ftpcmd.txtで登録したサーバーに送ります。下記で問題なく送付できました。 【test.bat】 ftp -s:ftpcmd.txt 【ftpcmd.txt】 open 192.168.100.100 username password put c:\hpdata\*.csv bye csvファイルは1分ごとに新しいファイルが生成されますが、上記だと c:\hpdata\にあるすべてのデータを送付してしまいます。 最新の更新履歴のファイルだけを送付するためには、どのように書けばよいでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • freetaka
  • ベストアンサー率53% (106/197)
回答No.2

簡単にやるなら c:\hpdata\old_data のようにフォルダを作成しておき サーバに送った後のファイルを moveして退避しておくという手もあります ftp -s:ftpcmd.txt move *.csv 作成したフォルダのパス を記述という感じで

tajix14
質問者

お礼

ありがとうございます。 PHPだと、execで下記のようにディレクトリの中の最新のものを拾うことが可能です。 同じような関数はやはりないのでしょうか? <?php exec ('dir /b /o-d img\*.jpg', $output); print "<img src=./img/$output[0]>"; ?>

その他の回答 (4)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.5

最新の意味が私と違うと思うのです。 最新というのは10年前でも更新されていなければ最新ですよね。 だから更新が1分前からされているかを管理しなければどうしようもないと思います。

tajix14
質問者

お礼

ありがとうございます。 PHPの場合、更新されたタイムスタンプを見に行ってくれるため それが10分前でもまたは何年前であっても、「ディレクトリの中の 最新のもの」を抽出することが可能です。 今回の件については私がwindowsの関数を知らないだけと思っていました。 やはり、PHPのような都合のいい関数はなさそうですね。 freetaka さんからご提案のあったディレクトリへの移動という形で 対応したいと思います。 どうもありがとうございました。

  • freetaka
  • ベストアンサー率53% (106/197)
回答No.4

こちらでテストした時のipのままなので ip部分は修正して使用してみてください

  • freetaka
  • ベストアンサー率53% (106/197)
回答No.3

こんな感じで dirコマンドの内容からひろった情報を利用して ftpcmd.txtファイルを生成しftpコマンドで利用なら なんとかいけそうですがどうでしょう set wfile=ftpcmd.txt for /F "tokens=1* delims=" %%s in ('dir /b /O:D c:\hpdata\*.csv') do set fname=%%s echo open 192.168.0.1 > %wfile% echo manage >> %wfile% echo manage >> %wfile% echo put c:\hpdata\%fname% >> %wfile% ftp -s:%wfile%

tajix14
質問者

お礼

ありがとうございます。 さっそく、下記のように試してみたのですがなぜかうまくいきませんでした。 set wfile=ftpcmd20.txt for /F "tokens=1* delims=" %%s in ('dir /b /O:D c:\hpdata\*.jpg') do set fname=%%s echo open 192.168.100.105 user pass > %wfile% echo manage >> %wfile% echo manage >> %wfile% echo put c:\hpdata\%fname% >> %wfile% ftp -s:%wfile% やはり、PHPのような都合のいい関数はなさそうですね。 freetaka さんからご提案のあったディレクトリへの移動という形で 対応したいと思います。 どうもありがとうございました。

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

当たり前ですが最新であることをどこかに記録しなければだめですよね。 10年前の物が最新かもしれなし、10秒前の物が最新かもしれないし。

tajix14
質問者

お礼

ありがとうございます。 PHPだと、execで下記のようにディレクトリの中の最新のものを拾うことが可能です。 同じような関数はやはりないのでしょうか? <?php exec ('dir /b /o-d img\*.jpg', $output); print "<img src=./img/$output[0]>"; ?>

関連するQ&A

  • バッチファイルで複数フォルダのファイルを結合したい

    バッチファイルで複数フォルダの中にあるlist.txtというテキストファイルを結合するにはどのように記述すればよいでしょうか。 具体的には、 複数のフォルダがあり、 C:\test\202104026\list.txt C:\test\202104025\list.txt      : C:\test\20000101\list.txt というような感じで、 各フォルダの中にlist.txtというファイルが入っています。 list.txt以外にもいろいろなファイルが入っています。 各フォルダの中のlist.txtファイルの内容を結合した1個のファイルを生成するバッチファイル(test.bat)を教えてください。 よろしくお願いします。(Windows10)

  • 最新更新日のBATファイルコピーについて。

    最新更新日のBATファイルコピーについて。 どなたか教えてください。 BATを夜間スケジュール化して、あるファイルをコピーするBATを作成したいのです。 条件は (1)コピー元フォルダ C:TEST フォルダ以下に(2)~(4)のファイルがあります。 (2)コピー元ファイル名 AAABBB20101001.txt (3)コピー元ファイル名 AAABBB20101002.txt (4)コピー元ファイル名 AAABBB20101003.txt   **ファイル名の日付部分のみが可変です。 (5)コピー先 D:TESTBKK (6)コピー後ファイル名 AAABKK.txt (4)のみをコピーし(6)のファイルとして上書きコピーするbatを作成したいのです。 自分でも下記のbatを作成したみました。 @ECHO OFF SET LOGPATH=C:\test FORFILES /P %LOGPATH% /M AAA*.txt /C "cmd /c COPY /y C:\test D:\test\AAABKK.txt" /D 0 最新日付のみをコピーしたつもりが、すべてのファイルがAAABKK.txtに追加された 状態で出力されていました。どなたかアドバイスをお願いします。 他に違う作成方法があれば教えてください。

  • タスクスケジューラーに登録するプログラム

    お世話になります。 タスクスケジューラーに自動で登録するプログラムを組みたいと思っています。 VBSなら微妙に経験があります。 プログラムの組み方が良く分かりません。 C:TESTの中にある TEST.bat というバッチファイルを毎週月曜日に実行したいと思っています。 TEST.batは、C:TESTの中にあるファイルを参照し、 ファイルを開くものになっています。 コマンドプロンプトで、タスクスケジューラーのやりかたも見たのですが それをどうやてtプログラム?にできるのか分かりません。 どんなパソコンでも、ダブルクリックで実行できるものが欲しいです。 C:TESTの中にタスクスケジュール登録ようのバッチファイルか何かを用意し、 それを叩けば簡単にタスクスケジュール登録ができるものを作りたいと思っています。 コマンドプロンプトだと、 at コマンドでできるみたいですが…毎回コマンドプロンプト開いて打ってられません。 何か良い方法があれば、お願い致します。

  • FTP送信

    バッチファイル(~.bat)でFTP送信を行いたいのですが。 条件としましては送信先が日付のフォルダに送る事です。 通常(私が知っているのは)・・・・ abcdef.bat    ftp -s:c:\temp\test.ftp test.ftp    open 192.168.210.112    (user)    (password)    put c:\temp\aaaa.txt bbbb\aaaa.txt    bye ・・・・・です。 abcdef.batを実行するとFTP送信が行われます。 これだと「test.ftp」が固定なので送信先のフォルダが変更できません。 何か方法がわかれば誰か教えて下さい。参考程度でもかまいません。

  • テキストファイルに引数を設定する方法

    宜しくお願いします。 【a.txt】を呼び出す【a.bat】というファイルを作りました。 【a.txt】には、FTP伝送でAAサーバからBBサーバへ ファイルを伝送する以下のコードが書かれています。 -a.txt------------------------------------- open *.*.*.* ←BBサーバのIPアドレス aa aaa cd C:\test binary lcd C:\test put zz.txt yy.txt bye -------------------------------------- 【a.bat】は以下のように考えています。 -a.bat------------------------------------- ftp -s:C:\a.txt  ←【a.txt】はCドライブの直下に置いています -------------------------------------- この【a.txt】の中に書かれている【zz.txt】及び【yy.txt】を 引数に設定し、それをbatで実行することは出来ないでしょうか。 OSはWindows2000を使用しています。 宜しくお願いします。

  • batファイルの相対パス

    batファイルの相対パス あるバッチが相対パスであるファイルを参照しています このバッチファイルを直接起動すれば、正しく参照できますが、 別のディレクトリにいる別のバッチファイルからcallされた場合、 呼び出し先の相対パスではなく、 呼び出し元の相対パスになってしまいファイルを参照できません。 この問題をスマートに解決する方法はありませんか? 例のchild.batからはfile.txtを参照できますが、 parent_1.bat経由の場合、ファイルが見つかりませんとなります。 child.bat の中で、「cd c:\dir_a」を書いて基点を変更すればとりあえずは行けそうですが、可能な限り絶対パスのベタ書きは避けたいです。 宜しくお願いします。 【例】 c:\ | +-dir_a | | | +-child.bat | | | +-file.txt | +-dir_b | | | +-parent_1.bat | +-dir_c | +-parent_2.bat ===== file.txt ===== test-test-test ===== file.txt ===== ===== child.bat ===== type ./file.txt pause ===== child.bat ===== ===== parent_1.bat ===== call c:\dir_a\child.bat ===== parent_1.bat =====

  • dosコマンドでのftp接続について

    コマンドプロンプト上でのftp接続について教えてください。 いろいろと調べて ****************************** [ftp.bat] ftp -s:ftpcmd.txt [ftpcmd.txt] open "IPアドレス" "ログイン名" "パスワード" put test.txt bye ****************************** でできることがわかりました。 しかし、上記のような方法の場合、ftpcmd.txtの中身を参照してしまうと使用者にアカウント、パスワードがわかってしまいます。 使用者にアカウント、パスワードがわからない形でコマンドプロンプト上でのftp接続ほうほうはないでしょうか。 (例えば、ftpcmd.txtを暗号化するとか…) ご教授をお願いします。

  • バッチファイルFTP -sで引数を渡せますか?

    どなたか教えて下さい。 TEST.batというバッチファイルの処理の中で、 FTP -s:D:\ABC.bat でファイルを指定して、FTPのputを実行させたいです。 putしたいファイルはTEST.bat内でsetで指定しています。そのsetで指定したファイルを引数などで、\D\ABC.batへ送る方法はないでしょうか?

  • バッチファイルでファイル生成の件

    OS :WindowsXP sp3 バッチファイルのコーディングのアドバイスをいただけませんでしょうか? バッチファイル名:aaaa.bat バッチファイル起動時 aaaa.bat a01 a02 a03 a04 ・・・・・4つの引数を使用 バッチファイルのソース net \\(ipアドレス)\test\a ・・・・ipアドレスのファイルサーバーにマウント echo test >>testtxt.TXT ・・・・testtxt.txtのファイルを生成 この状態で引数4つ目を使用してtesttxta04.txtというテキストを生成したいと思っています。 コーディングではどのようにすればいいのかアドバイスいただけませんでしょうか?

  • JavaScriptによる.exeファイルの実行

    JavaScriptファイルJS.htmlの実行によって 同ディレクトリ内のバッチファイルDIR.batファイルを実行し DIR.batがDIR.txtを生成するのを待ってDIR.txtをJavaScriptの内部変数var strに読み込ませる方法を教えてください なおDIR.batの内容はdir>DIR.txtです