
私は、ユーザー用に Windows ベースのファイル共有サーバー (ユーザー用の共有フォルダーが 100 個以上) を持っており、ユーザーはバックアップの目的で毎日ファイルをコピーしています。一部のユーザーはこれを忘れ、何日も経ってから、または災害復旧時に、そのユーザーがバックアップ フォルダーを維持していなかったことが判明します。これは IT 部門にとって問題となります。現在、私たちは毎日フォルダーを参照してすべてのユーザーをチェックし、最終更新日順に並べ替えています。私はこれをスクリプトで実現したいと考えています。
フォルダ構造は次のようになります
D:\バックアップ
D:\Backup\User1\Folder1 [ユーザーのメインバックアップファイルが含まれています] D:\Backup\User1\Folder2 [ユーザーのジャンクデータのみが含まれています]
D:\Backup\User2\Folder1 D:\Backup\User2\Folder2
等々
ここで、過去 X 日間に更新 (変更) されていないフォルダー名を一覧表示したいと思います。) ただし、実際のバックアップ ファイルが含まれている FOLDER1 のみをスキャンする必要があります。
答え1
より高度な処理を行うためにスクリプトを作成することもできますが、フォルダーに移動して Windows に組み込まれている検索を使用することをお勧めします。modified:<YYYY-MM-DD hh:mm:ss
これにより、指定した日付より前に変更されたすべてのファイルがチェックされます。
フォルダーのみをチェックするには、以下を追加します:kind:folders
特定のフォルダー名内のファイルのみをチェックするには、以下を使用します:foldername:Folder1
追加の値を使用して検索をカスタマイズできます。
ここ使用できる高度な検索オプションがいくつかあります。
答え2
使用している OS については記載されていません。Windows 8.1、Windows 10、または Windows Server 2008 R2 以降であると想定します。
まさにあなたが望むことを実行するコマンドが存在します。
それは呼ばれていますforfiles
このコマンドライン ユーティリティは、現在のフォルダー (およびオプションですべてのサブフォルダー) 内のすべてのファイルを一覧表示します。クエリのように、この膨大なリストにフィルターを適用できます。オプションの 1 つは、高度な日付システムです。特定の日付の前または後のすべてのファイルを選択できるだけでなく、特定の日数に対しても同じ操作を実行できます。
コマンドは次のようになります。
forfiles /s /m FOLDER1 /c "cmd /c forfiles /p @path /s /d -30"
これにより、これらの特定のフォルダーに対して過去 30 日間に変更されたすべての内容が表示されます。