Правильно разверните скопированные имена файлов с помощью XCOPY

Правильно разверните скопированные имена файлов с помощью XCOPY

Я сделал пакетный скрипт, который настроен на копирование всех .cppфайлов из указанного мной местоположения. Он может копировать файлыисохранить структуру папок, но она не расширяет скопированные имена файлов должным образом. У меня также есть старая версия, которая может это сделать, но она также копируетвсеиз целевой папки в новую папку. Цель новой версии —толькокопировать определенный тип файла.

Вот синтаксис XCOPY, который правильно расширяет имена файлов, но копирует все содержимое папки:

ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" "Backup\Projects" /S /Q /N

Вот новый синтаксис, который не позволяет развернуть имена файлов скопированных типов файлов:

ECHO F | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects\*.cpp" "Backup\Projects\" /S /Q /N

Вот пример сокращенных/неразвернутых имен файлов, которые я получаю в целевом каталоге:

WRNM~1.CPP.

Я не знаю, переключается ли команда переопределения подсказки( /S /Q /N)влияют на это, но мне нужно, чтобы подсказки были переопределены ими из-за огромного количества копируемых файлов. Я также хотел бы отметить, что несмотря на копирование файлов с помощью нового синтаксиса, я все равно могу XCOPYскопировать их, даже если я определяю цель как каталог с помощью переключателя D.

решение1

Я нашел решение, которое отвечает всем моим требованиям, используя ROBOCOPYвместо этого:

ROBOCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" "Backup\Projects" *.cpp /S

Вы можете добавить /Eпереключатель, чтобы также копировать пустые папки, если это необходимо. Я пробовал это раньше, но я потерял определение типа файла.

Дополнительная ROBOCOPYдокументация отСС64:

https://ss64.com/nt/robocopy.html

решение2

xcopy в документах Microsoft

Создает копии, используя короткие имена файлов или каталогов NTFS. /n требуется при копировании файлов или каталогов с тома NTFS на том FAT или когда в файловой системе назначения требуется соглашение об именовании файловой системы FAT (то есть 8,3 символа). Файловая система назначения может быть FAT или NTFS.

Ваша старая версия xcopy не обрабатывала /nдолжным образом. Проверьте xcopy /?каждый раз, когда опция меняла свое значение.

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