使用 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文件来自SS64

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

答案2

Microsoft 文档上的 xcopy

使用 NTFS 短文件或目录名创建副本。将文件或目录从 NTFS 卷复制到 FAT 卷时,或者目标文件系统需要 FAT 文件系统命名约定(即 8.3 个字符)时,需要 /n。目标文件系统可以是 FAT 或 NTFS。

您的旧版 xcopy 处理不/n正确。请检查xcopy /?每个选项,以检查选项的含义是否发生变化。

相关内容