ディレクトリ内のファイルを比較し、類似のファイルを削除する必要があります (ただし、通常よりも複雑です)

ディレクトリ内のファイルを比較し、類似のファイルを削除する必要があります (ただし、通常よりも複雑です)

私の仕事環境では、かなり変わったニーズがあり、それを解決するのにとても苦労しています。できるだけ短くわかりやすく説明しようとしますが、背景を説明することが、物事がなぜ難しいのかを説明する鍵となります。また、これはすべて Windows 環境で行われます。おそらくそれが重要なので、笑。

そこで、編集した PDF を特定のフォルダに自動的に移動する方法が必要です。これを行うには、ユーザーに PDF を編集してもらい、名前を付けて保存して最後に文字を追加することを計画しています。たとえば、AB111d などは完了フォルダに入りますが、AB111u の場合は未完了フォルダに入ります。私はすでに Robocopy でこれを解決しました。非常に簡単です。

ここで問題が起こります。ファイルは、メイン フォルダーに配置されたときに、必要な命名構造に従って既に名前が付けられているため、ユーザーはファイル全体の名前を変更する必要はなく、文字を追加するだけです (ここでは速度が重要なので、ユーザーが 1 日に何百回もこれを行う場合、名前全体を入力するとかなりの時間がかかります)。ただし、ディレクトリ内の文字が追加されていない元のファイルも削除 (または移動) する必要があります。

たとえば、ユーザーが AB111 を開いて作業し、名前を付けて保存し、名前を AB111d に変更すると、使用している robocopy スクリプトは AB111d を Done フォルダーに移動しますが、AB111 はまだそこにあります。この元の AB111 ファイルは、何らかの方法で削除する必要があります (再度削除するか、移動するか、ユーザーの作業フォルダーに存在しないようにして、ユーザーがすでに完了したことを認識できるようにする必要があります)。これがスクリプト化されているか、名前を付けて保存するときに発生するかは、どちらでも機能します。

たとえば、ディレクトリ内のファイルを比較するときに、付加された文字を使わない方法はありますか? その場合、作業ディレクトリを Done ディレクトリ (たとえば) と比較できますが、Done ディレクトリのファイルには付加された "d" は使用しません。その後、元のファイルを削除/移動します。

最後に、これらすべてをスクリプトで自動化する必要があり、最大 5 分ごとに実行する必要があります。

答え1

ロボコピー 次のオプションがあります:

/mov    Moves files, and deletes them from the source after they are copied.

宛先に存在するがソースには存在しないファイルを除外する必要がある場合、これらは「追加ファイル」と呼ばれます。追加ファイルを除外すると、宛先からの削除が防止されます。そのためのオプションは次のとおりです。

/xx     Excludes extra files and directories.

関連情報