複数の同一ファイル名を持つフォルダをコピーする方法

複数の同一ファイル名を持つフォルダをコピーする方法

外部 USB ストレージ デバイス (NTFS) に関するレポートを作成/提供する、カプセル化された Windows 10 Kiosk システムがあります。残念ながら、このシステムは非常に制限されているため、あまり語ることはありません。

コピー/バックアップするために、その USB ストレージ デバイスを別の Windows システム (Windows 10 Pro 19044.1387) に配置すると、いくつかの問題が発生します。

レポートのサブフォルダ (画像) の 1 つに、すべての画像ファイルが保存されています。このフォルダを新しい場所 (実際には何も存在しない場所) にコピーしようとすると、Windows によって、既存のファイルを上書きするかどうかを選択するように求められます。上書きすべきファイルはありません。

ソース フォルダーを見ると、確かに同じ名前のファイルがいくつかあることがわかります。たとえば、複数の「Image-1.jpg」ファイルです。これらのファイルの内容はすべて見た目が異なります。これらのファイルのいずれにも、カウントを示す括弧「()」はありません。

当初は、コピーによって隠された制御文字が削除されて重複が生じているのではないかと疑っていましたが、そのような文字を特定できませんでした。そうではないと言っているのではなく、単に簡単に特定できなかっただけです。

しかし、現在ではレポート全体をコピーすることはできません。

このレポートをコピー/バックアップし、同じ名前の重複ファイルを維持するには、どのようなオプションが残っていますか? Windows に同じフォルダー内に同じ名前の別のファイルを強制的に作成させることはできますか?

アップデート:

隠し文字を見つけました。先頭の「 」(スペース)であることがわかりました。1 つのファイルは「Image-1.jpg」と呼ばれ、もう 1 つは「Image-1.jpg」です。Windows コピーは先頭のスペースを削除し、存在しない名前の競合を引き起こしているに違いありません。(ファイル名の先頭にスペースがあると仮定します)

Windows から txt ファイルを作成しようとしましたが、先頭にスペースがあるファイルを作成することはできませんが、cmd/dos プロンプトからは作成できます。$ echo abc >" my file.txt" は、先頭にスペースがあるファイルを作成し、ファイル エクスプローラーから表示できます。

Windows ファイル エクスプローラーでは、ファイル名が同一であると主張されるため、名前を変更したり先頭のスペースを削除したりすることはできません。完全に新しい名前を付けてから、先頭のスペースを除いた元の名前に戻す必要があります。

したがって、Windows コピーが隠し文字を削除していたという私の推測は正しいです。先頭にスペースがあるファイル名は、そのスペースのない同じファイル名と一致するため、そのフォルダーがコピーされるときに両方が 1 つのフォルダー内にあると、互いに競合します。

この問題をテストするには、次の DOS コマンドを使用します。

$ mkdir "test"
$ cd test
$ echo "abc" >"file1.txt"
$ echo "def" >" file1.txt"

次に、ファイル エクスプローラーを使用してテスト フォルダーをコピーすると、ファイルの 1 つの名前が変更されます。ただし、"- コピー" と競合するファイルがない場合のみ、ファイルの名前が自動的に変更されます。競合がある場合は、対処方法を尋ねるメッセージが表示されます。

答え1

ファイル エクスプローラーのバグに遭遇したようです。ただし、PowerShell 7.x と Windows PowerShell にはこのバグはないようです。

デスクトップに「Test」フォルダを作成し、その中に「1.jpg」と「1.jpg」の 2 つのファイルを含めました。次に、次のコマンドを使用して「Test」の内容を「Test2」にコピーしました。

Set-Location '~\Desktop'
Copy-Item 'Test\*' 'Test2'

関連情報