我制作了一个批处理脚本,设置.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:
答案2
使用 NTFS 短文件或目录名创建副本。将文件或目录从 NTFS 卷复制到 FAT 卷时,或者目标文件系统需要 FAT 文件系统命名约定(即 8.3 个字符)时,需要 /n。目标文件系统可以是 FAT 或 NTFS。
您的旧版 xcopy 处理不/n
正确。请检查xcopy /?
每个选项,以检查选项的含义是否发生变化。