[[20221028090948]] 『指定日数より以降のファイルのみを別のHDDにコピ=x(所轄担当者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定日数より以降のファイルのみを別のHDDにコピー』(所轄担当者)

以下のようなマクロを作成したいのですが教えてください。

HDD(含む外付け)に存在する複数ファイルを
 本日の日付より指定日数より以降のファイルのみを別のHDDにコピーしたい

但し、条件として階層構造(多階層構造)は保持したままとする。

INPUT:
 指定ドライブ
 指定日数

OUTPUT:
 コピー先ドライブ

例えば、
コピー元をD:でチェックの結果の対象ファイルが
 D:\1st\2nd\123.txt
 D:\5th\3rd\4th\789.txt だとすれば

コピー先がH:だとすれば
 H:\1st\2nd\123.txt 
 H:\5th\3rd\4th\789.txt とコピーする。

集計された最新データーのみ他部署に配布する時に利用したいと思います。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


 robocopyコマンドとかの方が向いてるんじゃないでしょうか?

Robocopyの基本動作とコマンドオプション解説
https://n-archives.net/software/robosync/articles/robocopy-specs-and-command/

 /MAXAGE:n 更新日時が指定した日時より古いファイルを除外する。
           n < 1900の場合 n日前、または nはYYYYMMDDの日付です
 /MIR      ディレクトリ ツリーをミラー化します (/E /PURGE と同等)。
 /XJD      ディレクトリのジャンクションポイントとシンボリックリンクを除外します。
 /XJF      ファイルのシンボリックリンクを除外します。

(白茶) 2022/10/28(金) 09:25:31


 か、↓これで...
「FastCopy」無料の高速ファイル・コピーツール - 窓の杜
https://forest.watch.impress.co.jp/library/software/fastcopy/

(白茶) 2022/10/28(金) 09:30:39


白茶さんへ、便利なツールが有るのですね。

調べたらRobocopyは、windowsの標準装備のツールのようなので
改めてインストール必要がなさそうなので
教えてもらったRobocopyを使いたく見よう見まねで
以下のRoboCopy.BATを作成しました。

robocopy J:\ C:\test\ /S /MIR /XJD /XJF /MAXAGE:10

パラメーターがまだ正しく理解していないと思われますが、
コマンドの意味は、

コピー元がJドライブ(サブディレクトリーを含む)で
コピー先がC:test\ でミラーリングする。

コピー対象は、本日より10日以内。

これで有っていますか ?

C:\testを作成して試してみましたが上手く処理できていない
testフォルダーに何もコピーされていませんでした。

(所轄担当者) 2022/10/28(金) 10:47:41


 試しに
 C:\test\
 を
 C:\test
 ではどうだろうか?
(ねむねむ) 2022/10/28(金) 11:06:37

 あとコピー元にNTFSドライブのルートフォルダを指定するとコピー先フォルダに
 隠し属性とシステム属性が付加されてしまうそうだ。
(ねむねむ) 2022/10/28(金) 11:13:46

ねむねむさん、アドバイスありがとうごじます。

C:\testに変更してみましたが何もコピーされません。

コピー元にルートフォルダーを指定すると制約が有るとのコメントが有ったので
ルートフォルダーでは無いフォルダー(J:\test)を作成して試して見ましたが
C:\test2に何もコピーされません。

robocopy J:\test C:\test2 /S /MIR /XJD /XJF /MAXAGE:10

(所轄担当者) 2022/10/28(金) 11:50:06


 一度ログ出力をしてみてはどうだろうか?
(ねむねむ) 2022/10/28(金) 12:44:20

 参考までに↓こちらで以前実際に使ったバッチです(/L 付きでログ出力のみ)

 @echo off
 set Source="C:\xxx"
 set Destination="D:\xxx"

 set LogFile=Robocopy_%date:~0,4%%date:~5,2%%date:~8,2%.log

 echo ▼開始時刻 %date% %time%>>%LogFile%====================================================================================================
 robocopy %Source% %Destination% /MIR /R:3 /W:3 /LOG+:%LogFile% /NP /NDL /TEE /XJD /XJF /L
 echo ▲終了時刻 %date% %time%>>%LogFile%====================================================================================================
 pause
 exit

(白茶) 2022/10/28(金) 13:06:38


 まあとりあえず「/S」は外してみては?

(白茶) 2022/10/28(金) 13:13:16


バッチファイルをつくっただけで、実行していないということはないだろうか
(もしや) 2022/10/28(金) 13:58:37

 あ、そうそう。
 ちなみに「FastCopy」もコマンドラインに対応してますから結構イイですよ〜

 Include/Excludeによるフィルタ指定や、FromDate (例 10日前: '-10D') なんかもオプション指定出来るハズです。

 GUIであらかじめやりたい事をJOBに登録しておいて、
 コマンドラインからは登録したJOB名を「/job=JOB名」で指定するだけ。みたいな使い方も可能です。
 ログファイルの出力先指定出来ますし、バッチ処理も組み易い作りになっててオススメです。

(白茶) 2022/10/28(金) 14:14:27


ねむねむさん、白茶さん 
  アドバイスありがとうございます。

batが上手く処理出来ない原因がわかりました。

文字コードを、utf-8で保存していたのが原因です。
Shift_JISに変更して問題なく処理できました。

お陰様で希望の事ができるようになり感謝します。
(所轄担当者) 2022/10/28(金) 14:55:28


 あ! あんた(Black)か。
 クッソ〜...やられたなー ^^;

 消したいwww (消さないけど)

(白茶) 2022/10/29(土) 09:35:58


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.