过去几天,我一直遇到 xcopy 问题,我不想再为此烦恼了。在我的 DOS 课程中,作业的一部分要求复制一个文件(使用 xcopy),新文件名应附加 .bak,同时保留原始扩展名,但我无法让它正确执行此操作。使用 xcopy * *.bak,我期望它能做到这一点,但它取代文件扩展名,而不是附加。我同班的一个朋友说这对他来说应该有效,但我觉得这很奇怪。我还尝试了 Google 搜索结果建议的其他通配符组合,但它们给出的结果相同,如果我能找到与此相关的其他内容的话。
我还想扩展一下,我不是寻求家庭作业帮助。我的家庭作业很简单,但我不明白为什么 xcopy 会给我这些结果,而同样的命令对其他人有效。谢谢。
答案1
在 DOS(和 Windows 命令行)中,所有文件的掩码为*.*
。例如“文件总是有扩展名,有时是空字符串”。文件名不能以.
因此 mask 的正式*
含义是“扩展名为空的文件”。但有些实用程序(包括 xcopy,正如您所发现的)会自动扩展*
为,*.*
因为……好吧,当没有逻辑时,我并不寻求逻辑。因此,在*
*.*
一些案件。
此外,xcopy 显然太聪明了,甚至用以下方式替换扩展名:
xcopy *.* *.*.bak
到添加 .bak
扩展,使用普通copy
的
copy * *.*.bak
(请注意,copy * *.bak
仍然代替扩大)
或者,如果你必需的要使用 xcopy,请编写 for 循环。
FOR %%I IN (*.*) DO xcopy %%I "%%~I.bak"
(在交互式命令行中,使用单个百分号%
代替%%
)