• ベストアンサー

ファイルのコピー

毎日、3つのファイル (この質問では1つとします) をコピーするのですが、簡単にしたいと思っています。 1. c:\log\log.2008-07-25 という名前のファイル (日付は昨日の日付) 2. c:\20080725\log というフォルダ (日付は昨日の日付) 1のファイルを2のフォルダ内にコピーしたいです。 ファイル名やフォルダ名の日付部分は、昨日の日付なので、毎日変化します。 調べたところ、メモ帳で以下のように書いて、copy.cmdなどという名前で保存すればいいというところまでは分かりましたが、日付の変化に対応できません。 copy c:\log\log.2008-07-25 c:\20080725\log これに加え、毎日、同じ時間にこのスクリプトを自動実行できればさらにいいと思っています。可能でしょうか。 宜しくお願い致します。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

まず、タイマー登録はこういう手順で。 http://www.atmarkit.co.jp/fwin2k/win2ktips/335tasksche/tasksched.html わかりやすいのは2段階に分ける方法です。 step1.cmdの内容: set D1=%DATE:/=-% set D2=%DATE:/=% echo copy C:\log\log.%D1% C:\%D2%\log\ > step2.cmd で、23:00 とかにstep1.cmdを実行し、0:10 とかにstep2.cmdを実行します。前日のうちに、翌日用のコピーコマンドを作っておくわけです。

buzhidao
質問者

お礼

ありがとうございます。 URLが「指定されたページは存在しません」となり、開けませんでした。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.3

#1です。 #2の方のお書きのWSHを使うのが本道ですが、難しいかと思ったので、あえてバッチ処理だけで出来る簡単な方法を書いてみました。 参考リンクは1文字を消してしまったようです。 http://www.atmarkit.co.jp/fwin2k/win2ktips/335tasksched/tasksched.html

buzhidao
質問者

お礼

ありがとうございます。 両方のやり方を検討してみます。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

Windows 2000、XP、2003あたりなら、WSH(VBScript)を使えば簡単だ。 ちょっと今スクリプトを練っている時間がないので、「VBS リファレンス」とかで検索して、 ・Now()関数 今日の日付をDate型で取得 ・DateAdd(interval, number, date)関数 Dateの加算減算をする(これで「今日」から「1日引く」)  ・Year(date)、Month(date)、Day(date)関数 Date型の年、月、日をIntegerで取得 (さっき今日から1日引いた奴の年月日を数字で取得) ・Right()関数 (年月日を4桁、2桁、2桁の文字列にする) ・Scripting.FileSystemObjectオブジェクト (Windowsのファイル操作全般) あたりをざっと見てみて欲しい。これらを組み合わせれば簡単にできるはずだ。 ちなみにメモ帳で書いてcopy.vbsなどという名前で保存する。

buzhidao
質問者

お礼

ありがとうございます。 簡単な人には簡単なのでしょうが、難しそうですね。 参考にしてみます。

関連するQ&A

  • 最新更新日の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上コピーコマンド実行で難題にぶつかりました。助けてください!

    下の実行コードのログファイル名の指定の部分を固定ではなくいつも前日のログファイルを取得できるようにしたいですがどうすればいいですか? WshShell.Run "cmd /c copy /y \\kkk\d$\LOG\kkk02\WEBEXTD20060124.log C:\kkk\dat\kkk02\kkk02WEBEXTD20060124.log" , 8,true WEBEXTD20060124部分でWEBEXTDこちらは固定です。 20060124部分は日付により変更ですが 例:今日が3日だから昨日のログWEBEXTD20060202.logを取ってきてコピーしてWEBEXTD20060202.logにしたいです。 あと可能であればパスの部分も固定ではなく フル-で決めたいですが(INIファイルからパラメータから取得させる)。。。可能ですか?

  • 新規のファイルがあればネットワークドライブにコピー

    以下のような仕掛けをWindows10でしたいのですが、お知恵をいただきたく思っています。 パソコンのC:\SOURCE フォルダにファイルが増えると、それをトリガーにNAS(N:\TARGET)にコピーしたい。 NASはドライブ割り当て済みの既存のもの。 C:\SOURCE にはもともと複数のファイルが入っているが、新規に増えたファイルだけをN:\TARGETの下にコピーしたい。 増えるファイルの名前は予測できないので、ワールドカードを使うしかない。 タスクマネージャー? スクリプト? あたりでしょうか?方法は問いませんが、できるだけ簡単な仕掛けで。 タスクマネージャーでCOPY C:\SOURCE\*.* N:\TARGET を数分間隔で起動するというような類は避けたい。 C:\SOURCEに昔からあるファイルも上書きコピーされてしまうし、そもそも何も新規のファイルが無くても起動させるのはログが大量にたまるし無駄な動きが多くなる。 確かROBOCOPYとかに差分だけコピーというオプションがあったような気がしますが、あまり詳しくないです。

  • 1つ下のファイルをコピーするバッチファイル

    コマンドプロンプトで実行するバッチファイル(x.bat)で C:\Aというフォルダのさらに1つ下のフォルダ (このフォルダは1つのみで名前は毎回変化します) の中にあるc.mpgというファイルを D:\Bフォルダにコピーするバッチファイルを 作りたいのですがどのように記述すればよいのでしょうか。 例えば、C:\A\data_20120922195626というフォルダ (data_20120922195626というフォルダ名は任意の名前ですが C:\Aフォルダの中にはこのフォルダ1つしかありません) の中に\c.mpgというファイルがあるとします。 バッチファイル x.bat を実行すると D:\Bフォルダにc.mpgをコピーしたいのです。 なお、data_20120922195626というフォルダの名前は バッチファイルを実行する時には毎回異っていますが バッチファイル実行中は変化しません。 VBscriptやwshなどは使わずWindosXPの標準DOS機能のみで お願いします。(WindosXP SP3)

  • 自動でファイルをコピーしリネームするソフトってありますか?

    とあるフォルダにあるファイルを自動でコピーしリネームしてくれるようなソフトを探しております。お金は使いたくないのでフリーソフトがよいのですが・・・ またファイルはログファイルのように月日の名前がついてしまうファイルなので毎回同じ名前ではないので例えばコンピュータの日付のシステムから前月の日付になっているファイルを取得してくれるようなものがあれば大変助かります。 よろしくお願いします。

  • バッチファイルでサーバーのファイルをクライアントへコピーしたい

    サーバーに保存されているファイルを、 クライアントのCドライブへコピーしたい。 各クライアントにバッチファイルを配布して、 それを実行するだけでコピーされるようにしたいのです。 初心者で申し訳ないのですが、何卒よろしくお願いします。 ------------------------ 下記の記述ですと、普通にサーバーのCドライブへファイルがコピーされます。 しかし、コピー先はバッチファイルを実行したクライアントのローカルディレクトリにしたいのです。 copy \\サーバー名\フォルダ名\ファイル名 C:\

  • ファイル名のコピー

    フォルダーの中に入っているファイル名をコピーしたいのですが、右クリックしてもコピーがでてきません。 ファイル名をコピーしてメモ帳にでもペーストして印刷したいと思っております。 解決方法をご存知の方宜しくお願いいたします。

  • batファイルで日付を取得

    初めまして。質問させていただきます。 バッチファイルで複数のフォルダからエクセルファイルをひとつのフォルダにコピーする方法を教えてください。 条件としては、 Aフォルダの名前:0413荒川 Bフォルダの名前:0413葛飾 Cフォルダの名前:0413台東 保存先:会計東京 毎日日付が変わる為、下記では対応出来ませんでした。 echo off copy D:\会計\東京\4月分\0413荒川\*.xls 会計東京 copy D:\会計\東京\4月分\0413葛飾\*.xls 会計東京 copy D:\会計\東京\4月分\0413台東\*.xls 会計東京 0413は今日の日付になります。 この、0413を自動で取得する方法を教えてください。 よろしくお願いします。

  • 写真のコピー

    マイピクチャーのフォルダ内の写真ファイルを同じフォルダにコピーする事が出来なくなりました。今までは出来てたのですが・・・。出来ていた時には写真の名前の前にcopyと付いて出来ていましたが、先日からコピーしようとすると「送り側と受け側のファイル名が同じです」と表示が出てコピーが出来ません。何故なのでしょうか?元通りにするにはどうしたら良いのでしょうか?ご教授お願い致します。

  • VBSで作成したフォルダにファイルをコピー出来ない

    いつもお世話になっております。 表題に関してなのですが、VBSでFileSystemObjectを利用してフォルダを作り、 そのフォルダにファイルをコピーするという内容のスクリプトを作成しています。 ですが、フォルダは無事に出来るのですが、ファイルをコピーしようとすると、 「書き込み出来ません」 と出て、コピーされません。 fso.CopyFileのところで、エラーが発生してるようです。 CopyFileメソッドの代わりにCopyコマンドで実行するように記述すると 問題なくコピーされます。 解決方法等ございましたら、ご教授ねがいます。

専門家に質問してみよう