最新更新日の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に追加された
状態で出力されていました。どなたかアドバイスをお願いします。
他に違う作成方法があれば教えてください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> (5)SRC?? などの用語がわかりません。
SRC=source の略。コピーなどを行う時のコピー元、などを示す名前としてよく使われます。
DST=destination の略。コピーなどを行う時のコピー先、などを示す名前としてよく使われます。
> (4)usebackq??
for のオプション usebackq は、in 以下に記入した内容の意味を指定するオプションです。
http://www.atmarkit.co.jp/fwin2k/operation/comma …
usebackq を指定した場合、バッククオート(`)で囲まれた文字列をコマンドとして実行します。
この場合、「dir /od /b %LOGPATH%\AAA*.txt」コマンドの実行結果がfor のループで処理されます。
dir のオプション「/b」はファイル名だけを表示、「/od」はファイルの更新時刻順に並べる、という意味なので、このfor文では「%LOGPATH%\AAA*.txt」に該当するファイルを一番古いのから新しくなる方向に順番に do 以下を処理します。
do 以下では、set SRC=%%F として、for で処理対象のファイルを 環境変数 SRC に設定しています。上述の順番で処理しますので、結果としてこのforが終わった時点では、ループの一番最後すなわち一番新しいファイルのファイル名が 環境変数 SRC に設定された状態になります。
環境変数SRCの設定内容: AAA*.txt の中で一番新しいファイルのファイル名
環境変数DSTの設定内容: AAABKK.txt
ですので
> copy /y %LOGPATH%\%SRC% %LOGPATH%\%DST%
で、一番新しいファイルが AAABKK.txt にコピーされます。
と、ここまで書いてちょっと気づいたのですが、AAABKK.txt も AAA*.txt に該当するので、このままだとAAABKK.txt 自体がバックアップ処理対象になってしまいますね。
AAABKK.TXTが最新ということは、バックアップ対象のファイルが新たに作られていないということですので、
環境変数SRCの内容が AAABKK.TXT でない時だけコピーすればいいということで、コピー部分は
---
if not %SRC% == %DST% copy /y %LOGPATH%\%SRC% %LOGPATH%\%DST%
---
としておけば、無駄なコピーをしなくなる分、効率がちょっと良いです。
No.1
- 回答日時:
質問者さんの書いたコマンドだと、FORFILESの引数が
「cmd /c COPY /y C:\test D:\test\AAABKK.txt」 になってますから、
マッチしたファイルに関係なくこのコマンドを実行してしまいますね。
コピー元はFORFILESでマッチしたファイルを指定するように、
---ここから---
FORFILES /P %LOGPATH% /M AAA*.txt /C "cmd /c COPY /y @path D:\test\AAABKK.txt" /D 0
---ここまで---
とするべきでしょう。
あるいは、かならずちゃんと毎日実行するのならいいのですが、
FORFILESで /D 0 (更新日時が実行日同じ日のファイルを対象)にすると、
タイミング的に処理対象のファイルが無い可能性が出てきますので、
「最新のファイル」を対象にするような処理にした方が良いでしょう。
こんな感じでどうですか。
---ここから---
@echo off
set LOGPATH=C:\test
set DST=AAABKK.txt
for /F "usebackq" %%F in ( `dir /od /b %LOGPATH%\AAA*.txt` ) do set SRC=%%F
copy /y %LOGPATH%\%SRC% %LOGPATH%\%DST%
---ここまで---
この回答への補足
ご回答ありがとうございます。
追加で質問させてください。
(1)@echo off
(2)set LOGPATH=C:\test
(3)set DST=AAABKK.txt
(4)for /F "usebackq" %%F in ( `dir /od /b %LOGPATH%\AAA*.txt` ) do set SRC=%%F
(5)copy /y %LOGPATH%\%SRC% %LOGPATH%\%DST%
上記のコードでわからないところがあります。
(4)usebackq??
(5)SRC?? などの用語がわかりません。
どういう役割をしてるのかご教示願えませんか。
勉強不足で申し訳ないです・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- その他(プログラミング・Web制作) フォルダ内の特定 拡張子のファイルを一括実行するBat ファイルについて 4 2022/04/17 09:51
- グループウェア 一太郎がイントラで開けません。対処方法を知りたいです。 3 2023/04/04 13:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- UNIX・Linux Ubuntu でinvalid filenameとなるファイルをコピーする方法 3 2023/06/08 22:26
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) 1つのファイルを複数のフォルダにファイル名を【明日の日付】にして、コピーしたい 5 2022/12/13 20:11
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
【選手権お題その2】この漫画の2コマ目を考えてください
サッカーのワンシーンを切り取った1コマ目。果たして2コマ目にはどんな展開になるのか教えてください。
-
フォルダ内の更新日時が一番新しいファイルを開きたい
その他(プログラミング・Web制作)
-
指定したフォルダ内の最新ファイルのみをコピー
Visual Basic(VBA)
-
xcopyで特定のファイルのみをコピーする方法
Windows 10
-
-
4
バッチで当日日付で作成されるフォルダだけを全てコピー
Microsoft ASP
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
FTPとファイルコピーの違いにつ...
-
バッチファイル XCOPYで上書き...
-
DOSコマンドのコピー完了判定
-
ゴミ箱に移動するような削除を...
-
RealSyncでデータを自動バック...
-
同じファイル名 上書きしないフ...
-
エクセルのハイパーリンクがコ...
-
複数のファイルコピー
-
マインクラフトPCをプレイしよ...
-
パワポでスライドをコピーでき...
-
LAN接続HDD(LinkStation)で削...
-
[エクセル]コピーするとオブジ...
-
再インストール出来ません。
-
アクセス クエリを別のファイ...
-
バッチファイルのコピーで
-
4時間
-
バッチファイル 別ファイルにリ...
-
エクセルVBAで開いているファイ...
-
SDカードのコピーと再生の仕方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
Vba初心者です。下記のコード助...
-
frxファイルの役目
-
バッチファイル XCOPYで上書き...
-
エクセルのハイパーリンクがコ...
-
[エクセル]コピーするとオブジ...
-
バッチファイル 別ファイルにリ...
-
ファイルサーバ上のファイルが...
-
エクセル2010、図が大きすぎま...
-
バッチファイルのコピーで
-
同じファイル名 上書きしないフ...
-
bat 同名ファイルコピー時にリ...
-
アクセス クエリを別のファイ...
-
xcopyでのバッチコピー方法でコ...
-
パワポでスライドをコピーでき...
-
マインクラフトPCをプレイしよ...
-
vbsでExcelのシートをコピーす...
-
エクセルVBAで開いているファイ...
-
DOSコマンドのコピー完了判定
-
FSO.CopyFileでのエラー無視方法
おすすめ情報