DOS 移动特定的 .xml 文件扩展名

DOS 移动特定的 .xml 文件扩展名

我想将 .xml 文件从一个目录(我们称之为“from”)移动到另一个目录(我们称之为“to”),但使用通配符会移动不需要的文件,例如 .xml_。如何在移动它们时明确指定“.xml”扩展名?

答案1

正如@Scott 的链接所讨论的,*.xml匹配*.xml_,因为 8.3 名称以.XML(use dir /xto show) 结尾。

幸运的是,档案命令不受此怪癖的影响,因此您可以使用:

forfiles /m *.xml /c "cmd /c move @path TargetDir\"

笔记:

  • 因为move是内部命令,cmd所以需要单独的 来调用它(使用外部命令(例如 )则不需要xcopy,如forfiles /m *.xml /c "xcopy @path TargetDir\")。
  • 有一个/s选项,它将通过子目录进行递归,但不会递归目标目录:如果您希望源树在目标处匹配,您将需要解析源路径以找到正确的目标目录,这可能是最好在批处理文件中完成:

    forfiles /m *.xml /c "cmd /c call mover.cmd @relpath TargetDir\"

  • 如果您需要mover.cmd,我会将其作为脚本练习留给您编写。

  • 我还没有测试过当文件或目录名称中有空格时会发生什么,但我预计情况会很复杂。

答案2

您应该只能使用 *.xml 作为文件名来移动 .xml 文件。这将导致以下命令:
move C:\source\folder\*.xml C:\destination\folder\

相关内容