Как скопировать папку с несколькими одинаковыми именами файлов

Как скопировать папку с несколькими одинаковыми именами файлов

У меня есть инкапсулированная система Windows 10 Kiosk, которая создает/предоставляет отчеты о внешних USB-накопителях (NTFS). К сожалению, я не могу много сказать об этой системе, поскольку она довольно хорошо привязана.

Когда я подключаю этот USB-накопитель к другой системе Windows (Windows 10 Pro 19044.1387) для копирования/резервного копирования, я сталкиваюсь с некоторыми проблемами.

В одной из подпапок отчета (изображения) хранятся все файлы изображений. При попытке скопировать эту папку в новое место (где ничего ценного нет) Windows предлагает мне выбрать, что делать с перезаписью существующих файлов. Их не должно быть!

Заглянув в исходную папку, я вижу, что там действительно есть несколько файлов с одинаковыми именами. Например, несколько файлов "Image-1.jpg". Содержимое этих файлов визуально отличается. Ни в одном из этих файлов нет скобок "()" с подсчетами.

Я изначально подозревал скрытые управляющие символы, которые, вероятно, удалялись копией, что приводило к дублированию, но я не мог идентифицировать такие символы. Я не говорю, что это не так, я просто не мог легко идентифицировать такие.

Однако сейчас я не могу скопировать отчет полностью.

Какие варианты мне остались для копирования/резервного копирования этого отчета и сохранения дубликатов файлов с идентичными именами? Могу ли я заставить Windows создать еще один файл с тем же именем в той же папке?

ОБНОВЛЯТЬ:

Я нашел скрытый символ. Оказывается, это начальный " " (пробел). Один файл называется "Image-1.jpg", другой — "Image-1.jpg", копия Windows, должно быть, удаляет начальные пробелы и вызывает конфликт в именах, где их нет. (Предполагая, что вы можете начать имя файла с начального пробела)

Я только что попытался создать текстовый файл из Windows, и он не позволяет создать файл с начальным пробелом, но из командной строки cmd/dos это можно сделать. $ echo abc >" my file.txt" создает файл с начальным пробелом, который можно просмотреть в проводнике.

Из проводника Windows File Explorer вы не можете переименовать и удалить начальный пробел, так как он утверждает, что имена файлов идентичны. Вы должны полностью дать ему новое имя, а затем изменить его обратно на исходное имя за вычетом начального пробела.

Так что моя догадка, что копирование Windows удаляло скрытые символы, верна. Имя файла с начальным пробелом соответствует тому же имени файла без этого пробела, поэтому если оба находятся в одной папке, когда эта папка копируется, они будут конфликтовать друг с другом.

Для проверки этой проблемы используйте следующие команды DOS:

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

Затем используйте File Explorer для копирования тестовой папки, и вы увидите, что он переименовывает один из файлов. Однако он автоматически переименует файл только в том случае, если нет других конфликтов с "- Copy". Если есть конфликт, то вам будет предложено, что делать.

решение1

Похоже, вы столкнулись с ошибкой File Explorer. Однако PowerShell 7.x и Windows PowerShell, похоже, не имеют этой ошибки.

Я создал папку «Test» на рабочем столе, содержащую два файла: « 1.jpg» и « 1.jpg». Затем я скопировал содержимое «Test» в «Test2» с помощью следующей команды:

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

Связанный контент