質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

2回答

2137閲覧

更新日が指定した時間以降のファイルのコピー

zuou685

総合スコア0

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2024/02/27 09:48

実現したいこと

更新日が指定した時間以降のファイルのコピー

前提

フォルダの中に5万弱のファイルが存在しています。夜間に全ファイルに対して更新がかかり、日中はいくつかのファイルに時折更新がかかります。
日中に更新がかかったファイルだけを抜き出そうとしています。

発生している問題・エラーメッセージ

当初robocopyコマンドのmaxageオプションを使って更新ファイルをコピーしようとしましたが、ファイルは夜間に更新がかかった時に当日の日付に変わっており、これでは全ファイルが対象となります。

powershellでも調べてみたのですが、特定の日付以降に更新されたものは検索できても、当日の◯時以降に更新されたファイルを見つける方法は見当たりませんでした。

バッチ処理で実現する良い方法がある場合教えていただけるでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

バッチスクリプトだけで出来ます。
だたし、ファイル1つごとにバッチスクリプトのループを回るので、コピーするファイルが数千、数万と大量だと、コピー自体以外のオーバーヘッドが大きいでしょうね。

CMD

1setlocal 2rem コピー元に移動 3pushd \path\to\コピー元 4 5rem 今日の6時以降のファイルをコピーする 6set "LIMIT=%DATE:~0,10% 06:00" 7rem 新しいファイルからファイル名を1つずつ得る 8rem 特定の拡張子だけなら、'dir /b /o-d *.data' とか 9for /f "delims=" %%A in ('dir /b /o-d') do ( 10 rem 更新日時が古ければループ終了 11 if "%%~tA" LSS "%LIMIT%" goto :NEXT 12 rem コピーする。 出力は >NUL したほうがいいかも 13 copy "%%~A" \path\to\コピー先 14) 15:NEXT 16rem 他にしたい処理があれば

上記だと、ループを途中で抜けて時間を節約するために、新しいファイルからコピーしますが、何らかの理由でコピー順を古い方からにしたい場合は、dir /b /odで古い方からファイル名を得て、
if "%%~tA" GEQ "%LIMIT%" copy "%%~A" ですかね。

参考:%%~tAは更新日時文字列、LSS<GEQ>=の意味です。

投稿2024/02/27 11:02

otn

総合スコア86277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zuou685

2024/02/27 12:08

ご回答ありがとうございました。 これで、該当するファイルのコピーまで実行できました。 新しいファイルからコピーする配慮までありがとうございました。
guest

0

例えば当日の午前8時以降の場合では以下の様にします。

powershell

1$date = Get-Date -Hour 8 -Minute 0 -Second 0 2Get-ChildItem C:\Temp | where{ $_.LastWriteTime -ge $date }

投稿2024/02/27 10:11

melian

総合スコア21106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zuou685

2024/02/27 12:07

ご回答ありがとうございました。 これで該当するファイル名を取得できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問